2016-01-22 3 views
0

Я пытаюсь выполнить поиск по диапазону ячеек с помощью метода .Find, и я не могу заставить его работать. У меня есть верхние и нижние связанные числа в ячейках A1 и A2, и вы просто хотите найти столбец A. Есть ли другой способ, которым я могу настроить .Range(), чтобы я мог искать эти конкретные ячейки?VBA Поиск диапазона

lowNum = Worksheets("Sheet4").Cells(1, 1) 
HighNumb = Worksheets("Sheet4").Cells(1, 2) 

Row = 2 
While Not IsEmpty(Worksheets("Sheet4").Range("A" & Row)) 
cn = 1 
While Not IsEmpty(Worksheets("Sheet4").Cells(Row, cn)) 
    Set c1 = Worksheets("Sheet2").Range(Cells(lowNum, "A"), Cells(HighNumb,"A")).Find(
     What:=Worksheets("Sheet4").Cells(Row, cn), _ 
     LookIn:=xlValues) 
    If Not c1 Is Nothing Then 
     Worksheets("Sheet4").Cells(Row, cn).Delete shift:=xlToLeft 
     cn = cn - 1 
    End If 
    cn = cn + 1 
Wend 
Row = Row + 1 
Wend 




End Sub 
+0

Одна вещь, вы можете исправить это 'Worksheets ("Лист2") Диапазон (Cells (lowNum". A "), Cells (HighNumb," A ")' Это действительно должно быть 'Worksheets (« Sheet2 »). Range (Worksheets (« Sheet2 »). Ячейки (lowNum,« A »), Worksheets (« Sheet2 »). Ячейки (HighNumb, «A») 'Или, как я предпочитаю писать для краткости' With Worksheets («Sheet2») .Range (.Cells (lowNum, «A»). Ячейки (HighNumb, «A "))' Вам нужно квалифицировать свои ссылки на листы при использовании ячеек внутри диапазона. – user1274820

+0

Не совсем понятно, о чем вы подразумеваете: у меня верхняя граница и ниже связанные ячейки в ячейках A1 и A2 и просто хотите выполнить поиск в столбце. Есть ли другой способ, которым я могу настроить .Range(), чтобы я мог искать эти конкретные ячейки? Вы ищете целые числа между числами в ячейках A1 и A2 на Sheet2? – user1274820

+0

Я должен был искать ячейки между двумя числами. Например, я хочу выполнить поиск из A200: A450 для значений, сохраненных в Sheet4. – levif1

ответ

0

я исправил свой код немного, скажите мне, если он работал:

lowNum = Worksheets("Sheet4").Cells(1, 1).Value 
HighNumb = Worksheets("Sheet4").Cells(1, 2).Value 

LastRow = Worksheets("Sheet4").Cells(Worksheets("Sheet4".Rows.Count, "a").End(xlUp).Row 

For Row = 2 To LastRow 
    While Not IsEmpty(Worksheets("Sheet4").Range("A" & Row)) 
     cn = 1 
     While Not IsEmpty(Worksheets("Sheet4").Cells(Row, cn)) 
      Set c1 = Worksheets("Sheet2").Range(Cells(lowNum, "A"), Cells(HighNumb,"A")).Find(What:=Worksheets("Sheet4").Cells(Row, cn).Value, LookIn:=xlValues) 
      If Not c1 Is Nothing Then 
       Worksheets("Sheet4").Cells(Row, cn).Delete shift:=xlToLeft 
       cn = cn - 1 
      End If 
     cn = cn + 1 
     Wend 
    Row = Row + 1 
    Wend 

End Sub 
+0

PS: lowNum, HighNum и LastRow должны быть объявлены целыми числами или длинными – Kathara

+0

Спасибо, что это сработало. И я их объявил, что я просто не копировал все это извините. – levif1

+0

Все в порядке, просто нужно убедиться, что они были правильно объявлены для этого кода. Если бы это сработало, вы бы отметили это как ответ? :) – Kathara

Смежные вопросы