Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1620to1624
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Andere Farbe nach Suchlauf löschen

Andere Farbe nach Suchlauf löschen
09.05.2018 08:34:27
Chris
Hallo - hier der Link zum letzten Thread. Es hat alles super funktioniert durch eure Hilfe!
https://www.herber.de/cgi-bin/callthread.pl?index=1621400
Ich habe nun noch ein Anliegen, dann wäre das Makro perfekt.
Ich möchte gerne etwas Farbe in meine Excel Tabelle reinbringen, leider löscht das Makro aber alle Farben im Dokument um eben die ausgegebenen Treffer zu markieren. Meine Idee wäre - das halt die Farben im Dokument erhalten bleiben, die Listbox dann die Treffer rot markiert und wenn ich die Box schließe - rot dann verschwindet aber alle "Standard" mäßig eingestellten Farben erhalten bleiben
Hier der Code:
Private Sub CommandButton1_Click()
'Wir definieren im ersten Schritt die die aktuelle Position des
'jeweiligen Treffers enthält.
'Sowie die Variable PLZ. Sie wird die Position des ersten Treffers
'enthalten
Dim rngcellPLZ As Range
Dim PLZ As Variant
'Hintergrundfarben entfernen
Tabelle1.UsedRange.Interior.Color = xlNone
'Es werden die Spalten A - Z der Tabelle 1 durchsucht.
With Tabelle1.Range("a:z")
'Im ersten Schritt leeren wir die Ergebnistabelle
UserForm1.ListBox1.Clear
'Mit der Find Methode bilden wir letztendlich die Standardsuche aus Excel in VBA nach.
'Die Syntax lautet wie folgt:
'Ausdruck .Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase,  _
MatchByte, SearchFormat)
'Kurze Erläuterung zu den Komponenten:
'What = Was wollen wir suchen? (erforderlich)
'After = Wird hier nichts angegeben, beginnt die Suche in der liken oberen Ecke des  _
Bereiches.
'        Ansonsten, falls angegeben beginnt die Suche NACH dieser Zelle beginnt. ( _
optional)
'LookIN = Der Informationstyp (optional)
'LookAt = xlWhole oder xlPart, also nach einer "genauen" Suche oder auch nach  _
Teilbegriffen (optional)
'SearchOrder = xlByRows oder xlByColumns (optional)
'SearchDirection = Suchrichtung (optional)
'MatchCase = Groß oder Kleinschreibung beachten? Dann True, ansonsten False (optional)
'Wir werden hier in unserem Beispiel die einzige Erforderliche Komponente, What.
Set rngcellPLZ = .Find(UserForm1.TextBox1)
'Sollte die Methode keinen Treffer finden gibt sie "Nothing" zurück. Mit not....Nothing  _
werten wir den Treffer
'aus.
If Not rngcellPLZ Is Nothing Then
'Die Variable PLZ wird mit der Position des Treffers 1. Treffers belegt.
'Wenn der angebene Bereich durchsucht wurde, würde die Suche wieder von vorne  _
beginnen.
'Deshalb müssen wir unserer Do Loop Schleife einen Austritt mitteilen. Dies wird spä _
ter PLZ sein.
PLZ = rngcellPLZ.Address
'Mit einer Do Loop Schleife werden die Treffer abgearbeitet.
Do
'Jetzt befüllen wir die Listbox mit den Treffern.
With UserForm1.ListBox1
'Spaltenanzahl
.ColumnCount = 7 '-- eine Spalte mehr
'Item hinzufügen
.AddItem
'Unser Treffer (hier die Postleitzahl)
.List(.ListCount - 1, 0) = rngcellPLZ.Value
'Der dazugehörige Städtename eine Spalte rechts neben dem Treffer, deshalb . _
_
Offset(0, 1)
.List(.ListCount - 1, 1) = rngcellPLZ.Offset(0, 1).Value
'Und zu guter Letzt noch die Zelle des Treffers.
.List(.ListCount - 1, 2) = rngcellPLZ.Offset(0, 2).Value
'4. Spalte'
.List(.ListCount - 1, 3) = rngcellPLZ.Offset(0, 4).Value
'5. Spalte'
.List(.ListCount - 1, 4) = rngcellPLZ.Offset(0, 27).Value
'--neu--6. Spalte eintragen der Zeilennummer
.List(.ListCount - 1, 5) = rngcellPLZ.Address
'row = rngcellPLZ.row
'col = rngcellPLZ.Column
'Die Treffer werden mit einem grünen Hintergrund belegt.
rngcellPLZ.Interior.Color = vbGreen
rngcellPLZ.Offset(0).Interior.Color = vbGreen
'Definition der Spaltenbreite
.ColumnWidths = "1,5cm;1,5cm;1,5cm;2,0cm;2,0cm;1,0cm"
End With
'mit .FindNext springen wir zum nächsten Treffer der Suche.
Set rngcellPLZ = .FindNext(rngcellPLZ)
'Die Schleife soll solange arbeiten wie Treffer vorhanden sind.
'Wie aber oben bereits erwähnt würde der Suchlauf wieder von vorne beginnen,  _
deshalb
'soll die Schleife austreten wenn PLZ, also der erste Treffer, wieder erreicht  _
wurde
Loop While Not rngcellPLZ Is Nothing And rngcellPLZ.Address  PLZ
End If
End With
'Bevor die Prozedur beendet wird lassen wir uns noch die Treffer auf einem Label anzeigen.
Label1.Caption = ListBox1.ListCount & " Treffer"
'    If ListBox1.ListCount = 1 Then
'        Application.Goto Tabelle1.Range(ListBox1.List(0, 5))
'    End If
End Sub

Private Sub Label1_Click()
End Sub
'Bei Klick auf einen Treffer soll diese Zelle in der Tabelle ausgewählt werden
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'--auslesen der Zeilennummer in Spalte 6
Range(ListBox1.List(ListBox1.ListIndex, 5)).Select
End Sub

Private Sub UserForm_Click()
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nachgefragt
09.05.2018 12:32:53
Rudi
Hallo,
warum markierst du die Treffer überhaupt, wenn du sie in einer Listbox aufführst?
Gruß
Rudi
AW: nachgefragt
09.05.2018 12:36:01
Chris
In diesen Dokument haben viele Zellen die gleiche Nummer ... Also zum Beispiel kommt 0788 5x im Dokument vor. Diese lasse ich mir in der Listbox ausgeben. Mit einem Klick springt das Makro dann in die entsprechende Zelle. Diese würde ich halt gern extra markieren - ohne die komplette Formatierung der Mappe zu löschen.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige