ich versuche ein Makro zu schreiben, das in Spalte A jedes Arbeitsblattes nach einem Wert sucht und die gefundene Zeile markiert aber ich schaffe es nicht.
Kann mir jemand weiter helfen?
Markus
Sub FindAndMark()
Dim wksSheet As Worksheet
Dim objCell As Object
Dim strReferenceArray() As String
Dim strMatchValue As String
Dim strMultiReference As String
Dim lngReferenceCounter As Long
Dim lngCounter As Long
Dim lngStartSheet As Long
strMatchValue = "test"
lngStartSheet = ActiveSheet.Index
Application.ScreenUpdating = False
For Each wksSheet In ActiveWorkbook.Worksheets
Erase strReferenceArray
lngReferenceCounter = 0
strMultiReference = ""
For Each objCell In wksSheet.Range("A:A")
If objCell.Value = strMatchValue Then
ReDim Preserve strReferenceArray(lngReferenceCounter)
strReferenceArray(lngReferenceCounter) = objCell.Address
lngReferenceCounter = lngReferenceCounter + 1
End If
Next objCell
For lngCounter = 0 To lngReferenceCounter - 1
strMultiReference = strMultiReference & "," & strReferenceArray(lngCounter)
Next lngCounter
wksSheet.Select
Range(Right(strMultiReference, Len(strMultiReference) - 1)).Select
Next wksSheet
Sheets(lngStartSheet).Select
Application.ScreenUpdating = True
End Sub
Sub Suchen()
Dim rng As Range
Dim sAddresse, sAdd, sFind As String
sFind = InputBox("Bitte Suchbegriff eingeben:")
Set rng = Columns(1).Find(what:=sFind, lookat:=xlWhole, LookIn:=xlValues)
If Not rng Is Nothing Then
sAddresse = rng.Address(False, False)
sAdd = sAddresse
rng(1, 1).Activate
Do
Set rng = Columns(1).FindNext(after:=ActiveCell)
If Not rng Is Nothing Then
If rng.Address(False, False) = sAddresse Then Exit Do
rng(1, 1).Activate
sAdd = sAdd & "," & rng(1, 1).Address(False, False)
End If
Loop
End If
Range(sAdd).Select
End Sub
Sub Suchen()
Dim rng As Range
Dim sRow, sAdd, sFind As String
sFind = InputBox("Bitte Suchbegriff eingeben:")
Set rng = Columns(1).Find(what:=sFind, lookat:=xlWhole, LookIn:=xlValues)
If Not rng Is Nothing Then
sRow = rng.Row
sAdd = sRow & ":" & sRow
rng(1, 1).Activate
Do
Set rng = Columns(1).FindNext(after:=ActiveCell)
If Not rng Is Nothing Then
If rng.Row = sRow Then Exit Do
rng(1, 1).Activate
sAdd = sAdd & "," & rng(1, 1).Row & ":" & rng(1, 1).Row
End If
Loop
End If
Range(sAdd).Select
End Sub
Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne ein bestehendes.
Drücke ALT + F11
, um den Visual Basic for Applications (VBA) Editor zu öffnen.
Gehe zu Einfügen
> Modul
, um ein neues Modul zu erstellen.
Kopiere und füge den folgenden VBA-Code ein:
Sub FindAndMark()
Dim wksSheet As Worksheet
Dim objCell As Object
Dim strMatchValue As String
strMatchValue = "test" ' Hier kannst du den gesuchten Wert eingeben
Application.ScreenUpdating = False
For Each wksSheet In ActiveWorkbook.Worksheets
For Each objCell In wksSheet.Range("A:A")
If objCell.Value = strMatchValue Then
objCell.EntireRow.Interior.Color = RGB(255, 255, 0) ' Zeile markieren
End If
Next objCell
Next wksSheet
Application.ScreenUpdating = True
End Sub
Ändere den Wert von strMatchValue
auf den Inhalt, den du suchen möchtest.
Führe das Makro aus, indem du auf F5
drückst oder das Makro im Excel-Interface startest.
Fehler: Keine Zellen markiert.
Fehler: Makro läuft nicht.
Datei
> Optionen
> Trust Center
> Einstellungen für das Trust Center
> Makroeinstellungen
.Eine weitere Möglichkeit, Zellen in Excel zu suchen und hervorzuheben, ist die Verwendung der Bedingten Formatierung:
Markiere die Spalte A.
Gehe zu Start
> Bedingte Formatierung
> Neue Regel
.
Wähle „Formel zur Ermittlung der zu formatierenden Zellen verwenden“.
Gib folgende Formel ein:
=A1="deinSuchbegriff"
Wähle das gewünschte Format aus und klicke auf „OK“.
Wenn du nach einem bestimmten Wort in deiner Excel-Tabelle suchst, kannst du das folgende Makro anpassen:
Sub Suchen()
Dim rng As Range
Dim sAddresse, sAdd, sFind As String
sFind = InputBox("Bitte Suchbegriff eingeben:")
Set rng = Columns(1).Find(what:=sFind, lookat:=xlWhole, LookIn:=xlValues)
If Not rng Is Nothing Then
sAddresse = rng.Address(False, False)
sAdd = sAddresse
rng.EntireRow.Select ' Markiert die gesamte Zeile
Do
Set rng = Columns(1).FindNext(after:=ActiveCell)
If Not rng Is Nothing Then
If rng.Address(False, False) = sAddresse Then Exit Do
rng.EntireRow.Select
sAdd = sAdd & "," & rng.Address(False, False)
End If
Loop
End If
End Sub
Find
und FindNext
: Diese Methoden sind effizient, um mehrere Vorkommen eines Wertes zu suchen..EntireRow.Interior.Color
: Damit kannst du die gesamte Zeile hervorheben, nicht nur die Zelle.1. Wie kann ich das Makro anpassen, um nach mehreren Werten zu suchen?
Du kannst eine Schleife verwenden, um durch eine Liste von Suchbegriffen zu iterieren und das Makro entsprechend anzupassen.
2. Funktioniert das Makro in allen Excel-Versionen?
Ja, das Makro sollte in den meisten modernen Excel-Versionen (Excel 2010 und neuer) funktionieren. Achte darauf, dass Makros aktiviert sind.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen