Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / поиск ячейки VBA / 7 сообщений из 7, страница 1 из 1
19.07.2013, 11:17
    #38336577
Татик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки VBA
помогите распознать ошибку или написать другую команду
есть книга и много листов. по названию столбца "регион" нужно вычислить какой это столбец (на всех листах разный)
а затем удалить все лишнее по условию
Код: 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
19.07.2013, 11:21
    #38336586
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки VBA
Код: 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
19.07.2013, 11:48
    #38336653
Татик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки VBA
Shocker.Pro,

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

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

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

Есть простая процедура
Код: 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
18.09.2018, 13:46
    #39704226
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки VBA
...
Рейтинг: 0 / 0
18.09.2018, 15:14
    #39704333
И_Павел_С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск ячейки VBA
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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / поиск ячейки VBA / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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