Bei der VBA-Programmierung (Visual Basic for Applications) ist es häufig erforderlich, nach bestimmten Werten in einem Bereich von Excel-Zellen zu suchen. Dies kann beispielsweise bei der Analyse großer Datenmengen oder bei der Automatisierung alltäglicher Aufgaben nützlich sein.
Verwenden Sie ein Objekt, um eine Suche in Excel VBA durchzuführen Range, der einen Bereich von Zellen in einer Tabelle darstellt. Verwenden von Objektmethoden und -eigenschaften Range sie können nach Wert, Formatierung und anderen Parametern suchen.
Wenn Sie beispielsweise die erste Zelle mit einem bestimmten Wert im Bereich A1:D10 suchen möchten, können Sie die Methode verwenden Find:
Dim rng As Range
Set rng = Worksheets("Sheet1").Range("A1:D10")
Dim searchValue As String
searchValue = "apple"
Dim resultCell As Range
Set resultCell = rng.Find(What:=searchValue)
If Not resultCell Is Nothing Then
MsgBox "Zelle gefunden! Die Adresse der Zelle lautet " & resultCell.Address
Else
MsgBox "Zelle wurde nicht gefunden!"
End If
In diesem Beispiel ist die Variable searchValue enthält den gewünschten Wert und die Variable resultCell enthält einen Verweis auf die gefundene Zelle oder den gefundenen Wert Nothing wenn die Zelle nicht gefunden wurde.
Wenn Sie in einem Bereich suchen, müssen Sie berücksichtigen, dass doppelte Werte gefunden werden können. Wenn Sie alle Zellen mit dem angegebenen Wert finden möchten, verwenden Sie dazu eine Schleife:
Dim rng As Range
Set rng = Worksheets("Sheet1").Range("A1:D10")
Dim searchValue As String
searchValue = "apple"
Dim resultCells As Range
Set resultCells = rng.Find(What:=searchValue, LookIn:=xlValues, LookAt:=xlWhole)
If Not resultCells Is Nothing Then
Dim cell As Range
For Each cell In resultCells
MsgBox "Zelle gefunden! Die Adresse der Zelle lautet " &cell.Address
Next cell
Else
MsgBox "Keine Zellen gefunden!"
End If
In diesem Beispiel ist die Variable resultCells enthält einen Verweis auf alle gefundenen Zellen mit dem angegebenen Wert.
Wie kann ich in Excel VBA suchen
Sie können die Find-Methode verwenden, die mehrere Parameter benötigt, um eine Suche in Excel VBA durchzuführen. Geben Sie zuerst den zu suchenden Wert an, gefolgt vom Suchbereich und optionalen Parametern wie Suchrichtung, Groß- und Kleinschreibung usw.
Beispiel für die Verwendung der Find-Methode:
Dim rng As RangeSet rng = Range("A1:D10")Dim cell As RangeSet cell = rng.Find("apple", LookIn:=xlValues)If Not cell Is Nothing ThenMsgBox "Найдено в ячейке " & cell.AddressElseMsgBox "Не найдено"End If
Dieser Code sucht nach dem Wert "apple" im Bereich A1:D10, wobei die Groß- und Kleinschreibung in den Zellenwerten verwendet wird. Wenn ein Wert gefunden wird, wird eine Zellreferenz zurückgegeben, und wenn nicht, wird die Meldung "Nicht gefunden" angezeigt.
Die Find-Methode kann auch verwendet werden, um nach Formeln, Kommentaren und anderen Zellattributen zu suchen. Dazu müssen Sie im Parameter LookIn einen entsprechenden Wert angeben, z. B. xlFormulas für die Suche nach Formeln oder xlComments für die Suche nach Kommentaren.
Wenn Sie mehrere Übereinstimmungen finden müssen und nicht nur die erste, können Sie die FindNext-Methode verwenden. Diese Methode kann in einer Schleife verwendet werden, um die Suche fortzusetzen, bis alle Übereinstimmungen gefunden wurden.
Beispiel für die Verwendung der FindNext-Methode:
Set cell = rng.Find("apple", LookIn:=xlValues)If Not cell Is Nothing ThenDim firstAddress As StringfirstAddress = cell.AddressDoMsgBox "Найдено в ячейке " & cell.AddressSet cell = rng.FindNext(cell)Loop While Not cell Is Nothing And cell.Address <> firstAddressElseMsgBox "Не найдено"End If
Dieser Code findet die erste Übereinstimmung mit dem Text "apple" und verwendet dann die FindNext-Methode, um mit der Suche fortzufahren und alle Übereinstimmungen auszugeben. Verwenden Sie die Variable firstAddress, um die Adresse der ersten gefundenen Übereinstimmung zu speichern, um zu wissen, wann die Schleife beendet werden soll.
Dies sind nur einige der Suchfunktionen in Excel VBA. Das Range-Objekt bietet viele weitere Methoden und Eigenschaften, die Sie für komplexere Suchaufgaben in Excel verwenden können.
Verwenden des Bereichs für die Suche
Zunächst müssen Sie den Bereich definieren, in dem die Suche durchgeführt werden soll. Sie können dies mit dem Range-Objekt tun, indem Sie den entsprechenden Bereich angeben:
Dim rng As Range
Set rng = Range("A1:D10")
In diesem Beispiel wird der Bereich "A1:D10" in die Variable "rng" gespeichert.
Sobald der Bereich definiert ist, können Sie mit der Suche beginnen. Dazu können Sie die "Find" -Methode des Range-Objekts verwenden. Um beispielsweise den Wert "apple" im Bereich "A1:D10" zu finden, können Sie den folgenden Code verwenden:
Dim result As Range
Set result = rng.Find("apple")
Die "Find" -Methode gibt einen Verweis auf die erste Zelle zurück, die den gewünschten Wert "apple" oder "Nothing" enthält, wenn kein Wert gefunden wurde.
Wenn Sie eine komplexere Suche mit zusätzlichen Parametern wie Suchrichtung, Groß- und Kleinschreibung usw. durchführen möchten, können Sie zusätzliche Argumente für die Find-Methode verwenden. Zum Beispiel:
Set result = rng.Find("apple", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
In diesem Beispiel wird nur nach Werten in Zellen gesucht (das Argument "LookIn" mit dem Wert "xlValues"), wobei die vollständige Übereinstimmung berücksichtigt wird (das Argument "LookAt" mit dem Wert "xlWhole"). Die Groß-/Kleinschreibung wird ignoriert (das Argument "matchCase" mit dem Wert "False").
Durch die Verwendung eines Bereichs für die Suche in Excel VBA können Sie die Entwicklung und Ausführung von Makros im Zusammenhang mit der Suche und Verarbeitung von Daten erheblich vereinfachen und beschleunigen.