Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Change / Selection Change

Betrifft: Change / Selection Change von: eres
Geschrieben am: 11.08.2004 15:49:16

Hallo Excel-Profis,

nach langem rumprobieren (und mit Hilfe von Chris (Danke)) bin ich zu der Erkenntnis gelangt, dass die Veränderung eines Zellinhaltes (z.B. Feld A1 ist aktiv und enthält den Wert 10, nun wird die 10 durch eine 11 überschrieben und mit ENTER bestätigt, so wird:

1. ein Change-Ereignis ausgelöst (klar, da der Wert ja geändert wurde)
2. und zusätzlich auch ein ChangeSelection-Ereignis ausgelöst (obwohl die Adresse der aktiven Zelle nicht geändert wurde (Application.MoveAfterReturn steht auf False))

Gibt es in VBA die Möglichkeit, bei der obigen Aktion (Zelländerung von 10 in 11) das ChangeSelection-Ereignis zu unterdrücken ?

Vielen Dank und Gruss

eres

  


Betrifft: AW: Change / Selection Change von: ChrisL
Geschrieben am: 11.08.2004 16:03:58

Hi Erwin

Sorry dass ich mich nochmal einmische, aber wieso antwortest du nicht erst auf den Hinweis von Thomas Ramel. Einen besseren Fachmann auf VBA wirst du nur schwer finden.

http://www.excel-center.de/forum/read.php?f=1&i=73220&t=73204
https://www.herber.de/forum/messages/467660.html

Gruss
Chris


  


Betrifft: AW: Change / Selection Change von: chris
Geschrieben am: 11.08.2004 16:11:49

Chris, sorry, hatte ich noch nicht gesehen. Werde mich umgehend bei Thomas bedanken.


  


Betrifft: AW: Change / Selection Change von: ANdreas
Geschrieben am: 11.08.2004 16:21:07

Hallo Eres,

habe mir das ganze nicht durchgelesen, einfach mal etwas Code geschrieben, mit welchem man mit dem Problem sauber umgehen kann:

Private Function SetSelectionChange(Optional intParam%) As Boolean
Static blnSelectionChange As Boolean
Select Case intParam
    Case 1, 2: blnSelectionChange = intParam - 1
End Select
SetSelectionChange = blnSelectionChange
End Function


Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address(0, 0)
    Case "A1":
        SetSelectionChange 2
        MsgBox "SelectionChange Merker gesetzt"
End Select
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If SetSelectionChange Then
    SetSelectionChange 1
Else
    'Dein Code der bei "normaler" SelectionChange ausgeführt werden soll
    MsgBox "Test: Code bei SelectionChange wird gewünscht durchlaufen"
End If
End Sub


Kurze Erklärung: Wird in Zelle A1 das Change-Ereignis ausgelöst, so wird parallel dazu ein Merker gesetzt. Daraufhin wird das SelectionChange Ereignis durchlaufen. In diesem wird der Merker ausgelesen und je nachdem, der Code durchlaufen oder auch nicht.

Hoffe das hilft weiter,
Andreas
Nibbles für Excel


  


Betrifft: AW: Change / Selection Change von: eres
Geschrieben am: 12.08.2004 07:16:29

Vielen Dank Andreas, vielen Dank für Deinen Ansatz. In diese Richtung hatte ich auch schon gedacht. Da muss dann tatsächlich eine Variable ran, um abzuprüfen ob ein Ereignis bereits durchlaufen ist.
Ist aus meiner Sicht zwar nicht besonders schön, aber sicherlich ein gut funktionierender Weg.

Nochmals vielen Dank.

eres


 

Beiträge aus den Excel-Beispielen zum Thema "Change / Selection Change"