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

Ereignis: Bestimmte Markierung, Reihenfolge egal

Ereignis: Bestimmte Markierung, Reihenfolge egal
22.02.2007 07:50:00
Peter
Guten Tag miteinander
Nachfolgender Code bewirkt, dass beim Anwählen bestimmter Zellen in zwei bestimmten Reihenfolgen ein Makro ausgeführt wird.
Hier im konkreten Fall sind es nur 3 Zellen. Da diese Ereignisprozedur auch funktionieren will, wenn der Range grösser ist (und nicht zusammenhängend), möchte ich den Code modifizieren, dass es keine Rolle mehr spielt, in welcher Reihenfolge die einzelnen Zellen angewählt wurden. Wenn alle Zellen gemäss Range in beliebiger Reihenfolge angewählt wurden (keine weniger und auch keine zusätzlich), soll das Makro ausgeführt werden.
Wie muss der Code angepasst werden?
Danke für Feedback
Peter

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim ber As Range, ber2 As Range
Set ber = Range("A2:A3,A5")
Set ber2 = Range("A5,A2:A3")
If Target.Address = ber.Address Or Target.Address = ber2.Address Then test
End Sub

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ereignis: Bestimmte Markierung, Reihenfolge egal
22.02.2007 08:14:01
Harald
Hallo Peter (und Antworter, die auch nicht gern in den Mülleimer arbeiten),
schade....
dass ich mir gestern die Arbeit gemacht habe.
Mein angebotener Code löst das Problem, aber anscheinend suchst Du was Oberkniffliges.
Bin raus und lasse offen.
Gruss Harald
AW: Ereignis: Bestimmte Markierung, Reihenfolge egal
22.02.2007 08:25:00
Peter
Hallo Harald
Nein, ich finde es nicht schade, dass du dir die Arbeit gemacht hast, denn wir sind ja knapp vor dem Ziel. Und ich finde es auch ausserhalb dieser konkreten Fragestellung nicht uninteressant, wie der Zustand einer Markierung in einer Ergebnisprozedur abgefragt werden, bei der die Reihenfolge der Markierung keine Rolle spielt.
Gruss, Peter
Anzeige
AW: Ereignis: Bestimmte Markierung, Reihenfolge egal
22.02.2007 08:44:00
Harald
Wir sind nicht knapp davor, wir sind am Ziel.
Die Schleife startet, wenn 3 Zellen in Spalte 1 markiert sind (kann man anpassen)
Die Schleife zählt unabhängig von der Markierreihenfolge bei jedem !! Treffer um 1 hoch und wenn die Zielsumme erreicht ist, hast Du den Auslöser für weiteren Code.
Auch hier kann man alles anpassen.
Vielleicht war die Arbeit ja nicht ganz umsonst....jetzt, da ich den Code erklärt hab.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim zelle As Range, x As Byte
x = 0
If Target.Count = 3 And Target.Column = 1 Then
For Each zelle In Selection
If zelle.Address(0, 0) = "A2" Then x = x + 1
If zelle.Address(0, 0) = "A3" Then x = x + 1
If zelle.Address(0, 0) = "A5" Then x = x + 1
Next
If x = 3 Then MsgBox "A2, A3 und A5 ausgewählt"
End If
End Sub

Gruss Harald
Anzeige
AW: Ereignis: Bestimmte Markierung, Reihenfolge egal
22.02.2007 08:51:25
Peter
Hallo Harald
Ganz sicher war es nicht umsonst!
Ich habe noch eine kleine Frage zur Zeile
If Target.Count = 3 And Target.Column = 1 Then
Kann ich nicht "And Target.Column = 1" einfach weglassen, denn es trifft nicht immer zu, dass alle betroffenen Zellen in Spalte A enthalten sind. Oder braucht es wegen Speicherplatz oder so eine Spalteneingrenzung?
Gruss, Peter
AW: Ereignis: Bestimmte Markierung, Reihenfolge egal
22.02.2007 09:05:00
Harald
hi,
sicher kannst Du das weglassen. Macht performancetechnisch keinen allzu großen Unterschied.
So eine Abfrage kann sinnvoll werden, wenn andere Ereigniscodes eingebaut sind bzw. werden. Um Schnittmengen zu vermeiden (damit nicht plötzlich ein anderer Code starten will).
Wichtig ist:
Target.count und Zielwert x , sowie die Anzahl der Auslösezellen(hier A2,A3,A5) müssen gleich sein
Gruss Harald
Anzeige
AW: Ereignis: Bestimmte Markierung, Reihenfolge egal
22.02.2007 09:18:57
Peter
Vielen Dank!
Peter
Geht doch ;-)) owT
22.02.2007 09:26:33
Harald
Gruss Harald
AW: Ereignis: Bestimmte Markierung, Reihenfolge eg
22.02.2007 09:32:46
Erich
Hallo Peter und Harald,
wie wäre es damit?
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim rng As Range
Set rng = Intersect(Target, Union(Range("A2"), Range("A3"), Range("A5")))
If rng Is Nothing Then Exit Sub
If rng.Count <> 3 Then Exit Sub
MsgBox "A2, A3 und A5 ausgewählt"
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Ereignis: Bestimmte Markierung, Reihenfolge eg
22.02.2007 09:41:35
Harald
Hallo Erich,
pfff...oller Angeber ;-D
Kurz und knackig ohne Schleife.
Ich würde aber statt rng.Count in der Codemitte, dennoch auf Target.Count zu Codebeginn setzen, um den Code nicht bei jedem Zellenwechsel ähhmm intersecten ;-) zu lassen.
Gruss Harald
Anzeige
AW: Ereignis: Bestimmte Markierung, Reihenfolge eg
22.02.2007 09:49:38
Erich
Hi Harald,
stimmt,
if target.count  3 then Exit Sub
ganz oben wäre schneller. Unten müsste es aber (mit rng.count) stehen bleiben.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Ereignis: Bestimmte Markierung, Reihenfolge eg
22.02.2007 09:53:51
Peter
Danke nochmals euch beiden - sehr lehrreich.
Peter
Danke für Rückmeldung - Gerne! (oT)
22.02.2007 09:55:08
Erich
AW: Ereignis: Bestimmte Markierung, Reihenfolge eg
22.02.2007 11:55:59
Erich
Hi Ihr beiden,
ich musste auch noch lernen - und kann wieder ein bisschen angeben... ;-)
Man kann auch mehrzellige (rechteckige) Bereiche angeben und muss sich um die Zellenzahl nicht kümmern:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim rngS As Range, lngS As Long, rngT As Range
Set rngS = Range("A2:B3,A4:A5") ' hier Bereich angeben - dürfen sich nicht überschneiden!
lngS = rngS.Count
If Target.Count <> lngS Then Exit Sub
Set rngT = Intersect(Target, rngS)
If rngT Is Nothing Then Exit Sub
If rngT.Count <> lngS Then Exit Sub
MsgBox rngS.Address(0, 0) & " wurde ausgewählt"
End Sub
Die Bereiche müssen disjunkt sein, sonst wird lngS zu groß, weil Zellen mehrfach gezählt werden.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Ereignis: Bestimmte Markierung, Reihenfolge eg
22.02.2007 12:16:12
Peter
Hallo Erich
Das ist spannend, und funktioniert.
Vielen Dank, Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige