Discussion:
SelectionChange deaktivieren
(zu alt für eine Antwort)
Jochen Walerka
2013-11-03 23:36:21 UTC
Permalink
Hallo,

ich hab eine selectionchange-Sub geschrieben, in der ein Range abgefragt wird. In einer zweiten Sub selektiere ich diesen Range, so dass die erste Sub ausgelöst wird.
Wie kann ich das verhindern?

Danke schonmal
Jo
Thomas Ramel
2013-11-04 05:12:22 UTC
Permalink
Grüezi Joe
Post by Jochen Walerka
ich hab eine selectionchange-Sub geschrieben, in der ein Range abgefragt wird. In einer zweiten Sub selektiere ich diesen Range, so dass die erste Sub ausgelöst wird.
Wie kann ich das verhindern?
Schalte in dem Code, der die Selektion vornimmt (ist das überhaupt notwendig? Die allermeisten Aktionen kannst Du auch vornehmen ohne zu selektieren) die Events wie folgt aus:

Application.Enableevents = False
'Dein Code zum Selektieren
Application.Enableevents = True


Mit freundlichen Grüssen

Thomas Ramel
- MVP für MS-Excel -
Jochen Walerka
2013-11-04 17:45:41 UTC
Permalink
Hallo Thomas,

danke, das war es!
Ja, ist notwendig. Ich färbe unterschiedliche Bereiche per VBA ein - da darf das Event nicht anspringen, erst wenn ein Anwender reinklickt.

Gruss
Jo
Bernhard Sander
2013-11-05 11:11:40 UTC
Permalink
Hallo Jochen,
Post by Jochen Walerka
Ja, ist notwendig. Ich färbe unterschiedliche Bereiche per VBA ein - da darf das Event nicht anspringen, erst wenn ein Anwender reinklickt.
Thomas meint, ob es nötig sei mit SELECT zu arbeiten, um den Bereich, der
umgefärbt werden soll, anzusprechen.
Normalerweise ist es im Makro (wie Du gerade erleben darfst) ungünstig, mit
SELECT zu arbeiten.

Statt:
Range("a1:b2").Select
Selection.Font.Color=Rgb(255,0,0)

kann man auch programmieren:
Range("a1:b2").Font.Color=Rgb(255,0,0)

oder auch:
Set Bereich = Range("a1:b2")
Bereich.Font.Color=Rgb(255,0,0)
Bereich.Borders.Color=....

Dann wird das SelectionChange-Ereignis nicht aufgerufen werden, da die Auswahl
eben nicht geändert wird.

Die Variante, mal eben das Abarbeiten der Events ab- und später wieder
anzuschalten enthält die Gefahr, dass vor dem Wiedereinschalten das Makro (z.B.
wegen eines Fehlers) beendet wird. Von alleine schaltet sich die
Eventverarbeitung nämlich nicht wieder an. Man kann versuchen, das mit
geeigneter Fehlerbehandlung abzufangen, es bedeutet aber deutlichen Zusatzaufwand.

Gruß
Bernhard Sander
Jochen Walerka
2013-11-10 21:56:29 UTC
Permalink
Hallo Bernhard,

ich hab deinen Vorschlag aufgegriffen und umgesetzt. Natürlich brauche ich kein select und kann die Zellen "ferngesteuert" bearbeiten.
Danke dafür.
Meine Frage hat sich sozusagen in Nichts aufgelöst, ich hab enableevents wieder rausgelöscht, es geht dann auch ohne.

Grüsse
Jo

Loading...