powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Замена значений с помощью .find
4 сообщений из 4, страница 1 из 1
Замена значений с помощью .find
    #39590128
mi5tical
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, подскажите, что я делаю не так.
В столбце "A" представлены числовые значения от 5 знаков и значение "Нет".
Небольшой макрос для замены значений отрабатывает корректно, но, заменив последнее значение, не может выйти из цикла.

Почему?
Или возможно стоит искать именно числовые значения как-то иначе?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub Find()

Set oTwb = ThisWorkbook
Set oSh1 = oTwb.Sheets(1)


With oSh1.Range("A2:A20")
    Set c = .Find("????*", LookIn:=xlValues)
    If Not c Is Nothing Then
        firstResult = c.Address
        Do
            c.Value = "Да"
            Set c = .Find("????*", After:=c, LookIn:=xlValues)
        Loop While Not c Is Nothing And c.Address <> firstResult
    End If
End With

End Sub
...
Рейтинг: 0 / 0
Замена значений с помощью .find
    #39590176
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Замена значений с помощью .find
    #39591352
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mi5tical,
а точно нужен макрос?
Если поставить фильтр для выборки значений >0 текст скроется - отображаться будут только цифры.
В первом отображаемом значении (с числом) вводите 'Да' и двойным кликом по правому нижнему уголку заполняете это 'Да' на все отображаемые ячейки столбца. т.е меняете все численные значения на 'Да'.


mi5ticalИли возможно стоит искать именно числовые значения как-то иначе?
Можно проверять числовые значения через VarType. Пример проверки ниже.

Но вот что интересно: если выполнять сделать макросом типа ниже, результат не такой, как если выполнить вручную
- заполнение при .FillDown производится только найденной ячейки и не введенным, а значением выше, хотя с адресом вроде все норм.
В чем ошибка?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim rc As Range
Set ws = ActiveSheet: ws.AutoFilterMode = False
Set rF = ws.UsedRange.Columns(1) 'Range(Cells(2, 1).Address & ":" & Cells(ws.UsedRange.Rows.Count, 1).Address)
rF.AutoFilter Field:=1, Criteria1:=">0"
For Each rc In rF.Cells
    If VarType(rc.Value) <= vbDouble And VarType(rc.Value) >= vbInteger Then 'VarType(rc.Value) <> vbString
        Debug.Print rc.Address, rc.Value
        rc = "Yes": Stop
        rc.FillDown
        Exit For
        End If
Next
ws.AutoFilterMode = False
...
Рейтинг: 0 / 0
Замена значений с помощью .find
    #39591355
Bobgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bobgosmi5tical,
mi5ticalИли возможно стоит искать именно числовые значения как-то иначе?
Можно проверять числовые значения через VarType. Пример проверки ниже.

Но вот что интересно: если выполнять сделать макросом типа ниже, результат не такой, как если выполнить вручную
- заполнение при .FillDown производится только найденной ячейки и не введенным, а значением выше, хотя с адресом вроде все норм.
В чем ошибка?

Работает так:
Код: vbnet
1.
Range(Cells(rc.Row, 1).Address & ":" & Cells(ws.UsedRange.Rows.Count, 1).Address).FillDown
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Замена значений с помощью .find
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]