Excel VBA Makro zum suchen und markieren von Zeilen die ein bestimmtes Wort enthalten

  • #1
B

Burni

Neues Mitglied
Themenersteller
Dabei seit
16.06.2014
Beiträge
3
Reaktionspunkte
0
Hey Leute,

ich bin langsam etwas am verzweifeln.
Da meine Kenntnisse aus der Uni leider nicht sehr weit in die VBA programmierung reichen, habe ich vergeblich versucht ein Marko zu finden das folgendes kann.

Also ich suche ein Makro, in dem ich nach einem Wort zu suchen (auch im Fließtext einer Zelle) kann und das Makro dann die entprechende Zeile komplett farblich markiert oder halt in ein neues Tabbelenblatt kopiert oder iwie sowas.

Beispiel:
halloWillkommen
Herzlichen GlückwunschWie gehts dir so
Hey Hallo Wie gehts?Grüß dich


Wenn ich also jetzt nach hallo suche, soll der mir die kompletten Zeilen 1 und 2 farblich markieren.

Ich wäre euch für eure Hilfe seeehr dankbar !!

PS: Es wird für größere Exceltabellen benötigt ( an die 12 MB groß)
 
  • #2
Hallo Burni, du meinst sicher Zeile 1 und 3 markieren, oder?

Das folgende Makro setzt voraus, dass in der Tabelle keine Zellen manuell eingefärbt sind, denn es löscht erstmal alle Zellfarben in der ganzen Tabelle, um danach nur die Zeilen gelb zu markieren, die das gewünschte Suchwort (besser: die gewünschte Zeichenkette) enthalten. Schriftfarben und bedingte Formatierungen werden nicht angerührt.
Die Zeichenkette wird über eine Eingabemaske eingegeben.

Hier im Forum werden die Anführungszeichen nicht dargestellt, was das Makro unbrauchbar macht. Ich ersetze Anführungszeichen durch Paragraphenzeichen und mach sie rot:

Sub Wortmarkierung()
' ein original Klexy-Makro
' Sucht das eingegebene Wort entweder im gesamten verwendeten Bereich des Tabellenblatts
' oder nur im markierten Bereich, wenn ein Bereich von 2 oder mehr Zellen markiert ist

' Variablen festlegen:
Dim zAnzahl As Long, zRange As Range, zFarbe As Integer, zWort As String, i As Integer

' Variablen definieren:
zAnzahl = Selection.Cells.Count ' Anzahl der Zellen, die markiert sind (wenn mehr als 1 markiert ist)
Set zRange = Selection ' Bereich der markierten Zellen
zFarbe = 6 ' Farbe, mit der die Zeile eingefärbt werden soll
' Info zu den Farben hier:
i = 0 ' der Zähler zählt die Anzahl der male, bei denen kein Suchwort in die Eingabemaske eingetragen wird


ActiveSheet.Cells.Interior.ColorIndex = 0
' zuerst wird das ganze Tabellenblatt entfärbt, damit es
' keine von der vorigen Wortsuche übriggebliebene Färbungen gibt

NochmalEingeben:
'Eingabemaske für das Suchwort:
zWort = InputBox(Chr(13) & Chr(13) & §Bitte Suchwort eintragen§ & Chr(13) & §§, Z§eile mit Suchwort markieren§)
' Groß/Kleinschreibung wird nicht berücksichtigt, es können auch Ziffern sein

If zWort = §§ Then ' wenn kein Suchwort in die Eingabemaske eingegeben wurde
i = i + 1 ' wenn kein Suchwort eingegeben wurde, wird der Zähler um 1 hochgezählt

If i <= 2 Then ' wenn der Zähler 2 ist, wird das Makro abgebrochen
Exit Sub
Else
MsgBox §Es muss mindestens ein Zeichen eingegeben werden.§
'i = i + 1
GoTo NochmalEingeben ' wenn der Zähler unter 2 ist, springt das Makro nochmal zur Eingabemaske
End If

Else

If zAnzahl > 1 Then ' wenn mehrere Zellen markiert sind
For Each Cell In zRange
If InStr(1, Cell.Value, zWort) > 0 Then
Cell.EntireRow.Interior.ColorIndex = zFarbe
Else
End If
On Error Resume Next
Next Cell
Else ' wenn nix markiert ist, also das ganze Blatt durchsucht werden soll
For Each Cell In ActiveSheet.UsedRange
If InStr(1, Cell.Value, zWort) > 0 Then
Cell.EntireRow.Interior.ColorIndex = zFarbe
Else
End If
On Error Resume Next
Next Cell
End If

End If
MsgBox § Feddisch. §

End Sub
 
Zuletzt bearbeitet:
  • #3
WOW !!!
Vielen vielen Dank Klexy_16!!!!
Jap ich meinte Zeile 1 und 3 :embarrassed:
Läuft super!

PS: eine kleine Anmerkung hab ich doch ;-) bei NochmalEingeben:
'Eingabemaske für das Suchwort:
zWort = InputBox(Chr(13) & Chr(13) & §Bitte Suchwort eintragen§ & Chr(13) & §§, Z§eile mit Suchwort markieren§)

muss das § vor das Z

aber dann läuft es TOP !
 
  • #4
Das mit dem §Z stimmt. Hab mich vertan, nachdem mir das Forum alle Anführungszeichen rausgelöscht hat.
Freut mich, dass ich helfen konnte.
 
  • #5
:embarrassed::cry::meld::confused:
Ich hätte da nochmal eine kurze Frage :p

Das Marko funktioniert super und ist echt hilfreich!!

Allerdings arbeite ich jetzt mit so großen Exceltabellen in dessen Zellen auch teilweise kleine Romane stehen.
Wie könnte man das Marko umschreiben damit nur die Zellen markiert wird in der das gesuchte Wort dann auch steht und nicht mehr die gesamte Zeile ?

Vielen Dank für die hilfe ;-)

Gruß Burni
 
  • #6
statt
Cell.EntireRow.Interior.ColorIndex = zFarbe
nur
Cell.Interior.ColorIndex = zFarbe

VBA kann wie ein normaler Text entziffert und modifiziert werden.
 
Thema:

Excel VBA Makro zum suchen und markieren von Zeilen die ein bestimmtes Wort enthalten

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben