2013-02-18 19 views
22

Muszę znaleźć wartość celda w arkuszu Excel. I był przy użyciu tego kodu vba go znaleźć:Jak znaleźć wartość w kolumnie Excela za pomocą kodu VBA Komórki. Znajdź

Set cell = Cells.Find(What:=celda, After:=ActiveCell, LookIn:= _ 
    xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:= _ 
    xlNext, MatchCase:=False, SearchFormat:=False) 


If cell Is Nothing Then 
    'do it something 

Else 
    'do it another thing 
End If 

Problem jest, gdy muszę znaleźć wartość tylko w kolumnie excel. Uważam go z następnego kodu:

Columns("B:B").Select 
    Selection.Find(What:="VA22GU1", After:=ActiveCell, LookIn:=xlFormulas, _ 
     LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False, SearchFormat:=False).Activate 

Ale nie wiem, jak dostosować go do pierwszego kodu VBA, bo muszę użyć wartości nothing.

+6

http://www.siddharthrout.com/2011/07/14/find-and-findnext-in-excel-vba/ Także proszę unikać '.Select' Zobacz ten link http: //stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select/10718179#10718179 –

+0

Jeśli chcesz po prostu wiedzieć, czy wartość istnieje gdzieś w zakresie, jest to szybsze wykonanie (warto, jeśli sprawdzanie setek wartości), aby użyć formuły programu Excel. Jeśli celda jest na przykład numerem, możesz użyć IF Evaluate ("LICZ.JEŻELI (Arkusz1! A1: A1000," i celda i ")")> 0 WTÓCH ... – lessthanideal

Odpowiedz

32

Wystarczy użyć

Columns("B:B").Select 
Set cell = Selection.Find(What:="celda", After:=ActiveCell, LookIn:=xlFormulas, _ 
     LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False, SearchFormat:=False) 

If cell Is Nothing Then 
    'do it something 

Else 
    'do it another thing 
End If 
4

Tylko dla Uzupełniająco można również użyć tej samej techniki powyżej tabelach Excela.

W poniższym przykładzie szukam tekstu w dowolnej komórce tabeli Excel o nazwie "tblConfig", umieść w arkuszu o nazwie Config, który normalnie ma być ukryty. Akceptuję ustawienia domyślne metody Znajdź.

Dim list As ListObject 
Dim config As Worksheet 
Dim cell as Range 


Set config = Sheets("Config") 
Set list = config.ListObjects("tblConfig") 

'search in any cell of the data range of excel table 
Set cell = list.DataBodyRange.Find(searchTerm) 

If cell Is Nothing Then 
    'when information is not found 
Else 
    'when information is found 
End If 
3
Dim strFirstAddress As String 
Dim searchlast As Range 
Dim search As Range 

Set search = ActiveSheet.Range("A1:A100") 
Set searchlast = search.Cells(search.Cells.Count) 

Set rngFindValue = ActiveSheet.Range("A1:A100").Find(Text, searchlast, xlValues) 
If Not rngFindValue Is Nothing Then 
    strFirstAddress = rngFindValue.Address 
    Do 
    Set rngFindValue = search.FindNext(rngFindValue) 
    Loop Until rngFindValue.Address = strFirstAddress 
Powiązane problemy