Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
916to920
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
916to920
916to920
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Nächst. Leere Zelle n. gefundenen String markieren

Nächst. Leere Zelle n. gefundenen String markieren
17.10.2007 20:48:00
Andreas
Hallo Liebe herber.de- Gemeinde,
der produktive Einsatz einer Lösung, die ich mit tatkräftiger Unterstützung von Personen hier im Forum (Boris an vorderster Front, Peter F. und Matthias L.) entwickeln konnte, hat mich auf eine weitere Verbesserungsidee meines Ansatzes gebracht.
Es geht um eine String Suche in zwei Spalten, Wenn der String gefunden wird und auch in Spalte A die korrekte Zeilenklassifikation (consolidation level) erfüllt ist, wird die Zelle eingefärbt. Wenn der Suchstring nicht mehr gegeben ist, wird „zurückgefärbt“.
Dieses Makro funktioniert fehlerfrei auch im großen Rahmen.
Zum Ansehen und Entwickeln eine kleine Beispieldatei:
https://www.herber.de/bbs/user/46853.xls
Was mir als Verbesserung, als i Tüpfelchen vorschwebt, möchte ich gern am Beispiel der Suche nach „Dora“ oder auch einfach „Do“ oder „ra“ (ist ja eine Stringsuche.) zeigen.
Ausgangssituation: Alle Gruppierungen sind geschlossen. Ich trage in Zelle D1 „Dora“ ein und bestätige mit Enter. Das Makro läuft durch und färbt die Zellen goldgelb. Aber! Dies sehe ich nicht, da die Gruppierungen komplett geschlossen sind. Ich möchte nun über eine weitere Verbesserung des Codes erreichen, daß die jeweils nächste leere Zelle in der Spalte D nach dem Suchbegriff auch colorindex 44 bekommt. Das wären in der Beispieldatei die Zellen D4 und D22.
Ich habe mir ein paar Ansätze überlegt:
Entweder läßt man prüfen nach der nächsten Leeren Zelle nach der Zelle, die die Bedingungen der Stringsuche (und korrekter cons level) erfüllt.
oder
die nächste Zeile, in der in Spalte A eine „1“ steht
oder
Die nächste Zelle mit Colorindex 36
Da ich weiß, wie komplex es bis hierher war das Makro zu entwickeln und mittlerweile auch gut zu verstehen sehe ich für meine limitierten VBA Kenntnisse keine Möglichkeit das jemals umzusetzen. Ich würde mich sehr über Eure Anregungen und Ideen freuen, mit welchen VBA Befehlen/ Kombinationen das gewünschte Ergebnis erzielt werden kann.
Vielen Dank und Grüße,
Andreas Hanisch

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

Betreff
Datum
Anwender
Anzeige
AW: Nächst. Leere Zelle n. gefundenen String marki
21.10.2007 01:27:00
fcs
Hallo Andreas,
mit folgenden Anpasungen wird die nachfolgende leere Zelle ebenfals gelb eingefärbt.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Range)
Dim suchArea As Range, Zelle As Range
Set suchArea = Range("D1")
Dim suchArea2 As Range, Zelle2 As Range
Set suchArea2 = Range("C1")
Dim lRow As Long, x As Long
Dim strSuchbegriff As String
Dim lRow2 As Long, x2 As Long
Dim strSuchbegriff2 As String
If Target.Address(0, 0) = "C1" Then
For Each Zelle2 In suchArea2
If Zelle2.Value = "" Then Zelle2.Value = "Bitte Suchbegriff eingeben"
Next Zelle2
Set suchArea2 = Nothing
With Tabelle1
strSuchbegriff = "*" & UCase(.Cells(1, 3)) & "*"
lRow = .Cells(Rows.Count, 1).End(xlUp).Row
For x = 3 To lRow
If .Cells(x, 1) = 1 And UCase(.Cells(x, 3)) Like strSuchbegriff Then
.Range("C" & x, "C" & x).Interior.ColorIndex = 44
ElseIf .Cells(x, 1) = 1 Then
.Range("C" & x, "C" & x).Interior.ColorIndex = 36
End If
Next x
End With
End If
If Target.Address(0, 0) = "D1" Then
For Each Zelle In suchArea
If Zelle.Value = "" Then Zelle.Value = "Bitte Suchbegriff eingeben"
Next Zelle
Set suchArea = Nothing
With Tabelle1
strSuchbegriff2 = "*" & UCase(.Cells(1, 4)) & "*"
lRow2 = .Cells(Rows.Count, 1).End(xlUp).Row
'Farben zurücksetzen
.Range(.Cells(3, 4), .Cells(lRow2, 4)).Interior.ColorIndex = xlColorIndexNone
For x2 = 3 To lRow2
If .Cells(x2, 1) = 1 And .Cells(x2, 4) = "" Then
.Cells(x2, 4).Interior.ColorIndex = 36
End If
Next x2
For x2 = 3 To lRow2
If .Cells(x2, 1) = 0 And UCase(.Cells(x2, 4)) Like strSuchbegriff2 Then
.Range("D" & x2, "D" & x2).Interior.ColorIndex = 44
'nächste leere zeile finden
x = x2
Do Until .Cells(x, 4) = ""
x = x + 1
Loop
.Cells(x, 4).Interior.ColorIndex = 44
ElseIf .Cells(x2, 1) = 0 Then
.Range("D" & x2, "D" & x2).Interior.ColorIndex = xlColorIndexNone
End If
Next x2
End With
End If
End Sub


Anzeige
AW: Nächst. Leere Zelle n. gefundenen String marki
25.10.2007 19:28:40
Andreas
Hallo Franz,
entschuldige bitte die späte Antwort.
Ich habe erst jetzt die Zeit gefunden, Deine Code Verbesserung zu testen und in die größere Originaldatei zu übernehmen.
Und siehe da - auch dort laufen Deine Codezeilen perfekt!!! Genau das, wonach ich mich sehnte. Es mit einer kleinen und feinen "Do Until" Schleife umzusetzen finde ich clever und sehr praktikabel.
Ich werde noch ein wenig damit experimentieren und probieren.
Vielen, vielen Dank Franz!
Grüße aus Berlin,
Andreas Hanisch

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige