Hallo DPunch,
Danke für deine Antwort und die Tipps bezüglich der disposing Methode und dem Anhalten des Listeners.
DPunch hat geschrieben:
Ich sehe für Dein sehr spezielles Anliegen keine sinnvollere Lösung als einen Button (oder auch ein Tastenkürzel). ... Die Arbeit mit einem Listener, der dann ohne Möglichkeit der Korrektur einfach mal losfeuert, stelle ich mir im täglichen Betrieb unheimlich nervig vor.
Also ich baue eine in der Handhabung bewährte Exceldatei um. Der nun eingebaute Button verlangsamt eben das Arbeiten damit.
DPunch hat geschrieben:
Der Zellbereich selber weiss nicht, ob er selektiert wurde oder nicht und kann demzufolge auch keine entsprechende Rückmeldung geben.
Derartige Dinge kann Dir nur der Controller signalisieren, und der erstreckt sich nunmal über das ganze Dokument.
Ja, ok, da hab ich mich wohl undeutlich ausgedrückt. Wie soll ich das beschreiben...? Also egal, was wo markiert wird, geht das extrem auf die Performance, weil bei jeder Markierungsänderung ja eine Prüfung erfolgt. Aber eigentlich interessieren nur Markierungen in Spalte A. Keine Ahnung, wie das umzusetzen ist, jedenfalls habe ich die Performance Probleme in meiner Exceldatei nicht.
DPunch hat geschrieben:
Woher soll der Listener denn wissen, wann tatsächlich der "gewünschte" Bereich markiert ist? Vielleicht ist eine Zelle zuviel/zuwenig markiert?
Das ist ja genau das, was ich gern wissen möchte. Wie kann ich das dem Listener klarmachen, dass der gewünschte Bereich erst dann markiert ist, wenn ich meine Maustaste loslasse? Bei falscher Markierung kann ja in meinem Fall der aufpoppende Dialog einfach geschlossen werden. Hier mal der Code, wie einfach das mit VBA funktioniert:
Code: Alles auswählen
Private Sub Worksheet_SelectionChange()
On Error Resume Next
If Selection.Column = "1" And Selection.Columns.Count = 1 And _
Selection.Count > 1 And Selection.Areas.Count = 1 Then
UserForm1.Show
End If
End Sub
Ich bin sicher, da gibts auch eine Lösung für Basic.
Grüße,