Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
912to916
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
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

String Suche nur wenn Worksheet change_komplex!

String Suche nur wenn Worksheet change_komplex!
10.10.2007 21:56:00
Andreas
Hallo Herber Fans,
ich habe ein Makro, welches einen String in einer Spalte in Abhängigkeit von einem Kriterium sucht (richtige Konsolidierungsebene der Zeile). Wenn diese Ebene korrekt UND String in Zelle gefunden, dann soll eingefärbt werden. Wenn nicht gefunden, wird die ursprüngliche Färbung nicht verändert.
Das habe ich für eine Spalte auch so eingerichtet, daß über Worksheet change in der Zelle, in die der Suchbegriff eingegeben wird, als erstes eine Prüfung erfolgt, ob die Zelle nicht etwa leer ist. Es läuft wunderbar.
Ich möchte es nun für zwei spalten folgendermaßen erreichen:
Wenn change in C1 = ja, dann Stringsuche starten.
Wenn Change in D1= ja, dann Stringsuche starten.
Wenn change in C1 = nein, Abbruch
trotzdem noch prüfen, ob change in D1, wenn ja, dann stringsuche.
Wenn change in C1 = nein, Abbruch
Wenn change in D1 = nein, Abbruch.
etc.
Ich denke, es wird klarer, wenn ihr Euch die Beispieldatei samt kommentriertem Code anseht.
https://www.herber.de/bbs/user/46669.xls
Ich freue mich jetzt schon auf Eure Anregungen und Ideen, bzw. den Hinweis darauf, was falsch ist.
Vielen Dank und Grüße,
Andreas Hanisch

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String Suche nur wenn Worksheet change_komplex!
10.10.2007 22:12:00
{Boris}
Hi Andreas,
als Ansatz:
Prüfe zu Beginn des Change-Ereignisses auf die Adresse von Target:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Adress(0, 0) = "C1" Then
'Mach dieses
End If
If Target.Address(0, 0) = "D1" Then
'Mach jenes
End If
End Sub


Für "Mach dieses" und "Mach jenes" bietet es sich auch an, 2 unterschiedliche Subs in einem allgemeinen Modul zu schreiben. Diese rufst Du dann auf mit der Call-Anweisung:
Call Makro1
bzw.
Call Makro2
Auf diese Art und Weise kannst Du beliebig viele Makros ansteuern - die Unterscheidung erfolgt immer nur aufgrund der unterschiedlichen Target.Address.
Wenn es sehr viele verschiedene Codes sind, dann bietet sich auch die Select-Case-Methode an:


Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address(0, 0)
Case "C1": Call Makro1
Case "D1": Call Makro2
Case "E1": Call Makro3
'etc.
End Select
End Sub


War jetzt alles aus der Hand geschrieben - also ohne Gewähr für direkte Lauffähigkeit ;-)
Grüße Boris

Anzeige
Adress = Address oT
10.10.2007 22:16:00
{Boris}

AW: Adress = Address oT
15.10.2007 16:16:00
Andreas
Hallo Boris,
vielen Dank für diesen Ansatz. Ich habe ihn leider heute erst umsetzen und testen können. Es läuft wunderbar. Ich denke das Thema String Suche habe ich damit nun endlich abgeschlossen.
Habe noch einen schönen Tag.
Dank und Gruß,
Andreas Hanisch

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige