powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / поиск ячейки VBA
7 сообщений из 7, страница 1 из 1
поиск ячейки VBA
    #38336577
Татик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
помогите распознать ошибку или написать другую команду
есть книга и много листов. по названию столбца "регион" нужно вычислить какой это столбец (на всех листах разный)
а затем удалить все лишнее по условию
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Sub Macro1()


s_ = Sheets.Count
    
For s = 3 To s_
ActiveWorkbook.Sheets(s).Select

    Cells.Find(What:="Region", After:=ActiveCell, LookIn:=xlValues _
        , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        x = ActiveCell.Column
        y = ActiveCell.Row
        
        lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count

 
    Application.ScreenUpdating = 0
    For li = lLastRow To y + 2 Step -1
          If Cells(li, x) <> "Belorussia" Then Rows(li).Delete
 
   Next li
        
 Next s
   

        
MsgBox "Done" & vbCr & "enjoy it )"
        
End Sub



сейчас на поиске выдает ошибку если этого слова на листе нет
помогите, пожалуйста
...
Рейтинг: 0 / 0
поиск ячейки VBA
    #38336586
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim Res as Range

Set Res=Cells.Find(What:="Region", After:=ActiveCell, LookIn:=xlValues _
        , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
If Not Res Is Nothing Then
  Res.Activate 
  'и все остальные действия, если найдено



Но лучше все-таки избавиться от Activate
...
Рейтинг: 0 / 0
поиск ячейки VBA
    #38336653
Татик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

спасибо! на поиске ошибку не выдает. теперь что то не нравится другое. все, я уже весь мозг сломала ((
...
Рейтинг: 0 / 0
поиск ячейки VBA
    #38336865
Татик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

еще раз огромное спасибо все работает, я немного буксанула
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
поиск ячейки VBA
    #39704190
И_Павел_С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем, доброго времени.
Помогите пожалуйста. Моя проблема немного схожа с названием, темы, поэтом решил не создавать новую.

Собственно проблема такова

Есть простая процедура
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 Sub Test_find()

Dim CurrentChd As String
CurrentChd = Range("A1").Value  'текущее значение поиска
range ("B:B").Select
Selection.Find(What:=CurrentChd, After:=ActiveCell, LookIn:=xlValues, _
         SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate       ' поиск 
        
End Sub


Все работает нормально, но я бы хотел эту конструкцию запихнуть в функцию
получится приблизительно вот так

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Function MySearch(CurrentChdCell As Range, ChldItemsColumn As Range) As Integer

Dim CurrentChd As String
CurrentChd = CurrentChdCell.Value 

ChldItemsColumn.Select
Selection.Find(What:=CurrentChd, After:=ActiveCell, LookIn:=xlValues, _
         SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate     



далее простым циклом функция вернет количество найденных значений в указанном диапазоне, но проблема у меня в том, что
Код: vbnet
1.
2.
3.
4.
ChldItemsColumn.Select
Selection.Find(What:=CurrentChd, After:=ActiveCell, LookIn:=xlValues, _
         SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate


не работает в функции. Отладчик не на что не ругается, а просто завершает процедуру.
Как можно поступить?
Знаю, что можно запустить цикл без поиска по всем ячейкам в диапазоне и я это даже сделал, и даже все работает, но когда в таблице оказалось более 53000 строк, то функция выдавала ошибку #ЗНАЧ. Пришлось как бы разбить таблицу на две и все получилось. Подозреваю, что у цикла есть какое-то ограничение на количество петлей, поэтому хотел попробовать через поиск, но вот столкнулся с проблемой.
...
Рейтинг: 0 / 0
поиск ячейки VBA
    #39704226
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
поиск ячейки VBA
    #39704333
И_Павел_С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
спасибо за идею.
нашел инструкцию без active и select http://www.codernotes.ru/articles/vba/poisk-na-liste-excel.html
Пример 3 помог.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
With Worksheets(1).Range("A1:A50")
  Set c = .Find("asd", lookin:=xlValues)
  If Not c Is Nothing Then
    firstResult = c.Address
    Do
      c.Font.Bold = True
      Set c = .Find("asd", After:=c, lookin:=xlValues)
    Loop While Not c Is Nothing And c.Address <> firstResult
  End If
End With
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / поиск ячейки VBA
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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