Microsoft Excel

Herbers Excel/VBA-Archiv

Wieso Change nicht...

Betrifft: Wieso Change nicht... von: walter
Geschrieben am: 10.11.2012 10:18:37

Guten Morgen,
hatte letzte Woche mal wegen

Private Sub Worksheet_Change(ByVal Target As Range)
Unterstützung erhalten, soweit funktionierte auch alles.
Jetzt habe ich gestern festgestellt plötzlich funktionierte dies nicht
mehr.
Ich habe dann mal Gegoogelt und habe dieses Makro gefunden:

Private Sub Worksheet_Calculate()
On Error GoTo errExit
Application.EnableEvents = False
'Dein Code
Application.EnableEvents = True
Exit Sub
errExit:
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Call Worksheet_Calculate

nun habe ich es halt so reingesetzt und siehe da es klappt wieder.
Icvh versteh allerdings nur Bahnhof warum das nicht funktioniert und wie kann
ich es testen und ggf. selbst reparieren ?
Vielleicht kann mich jemand aufklären, will es nur verstehen,
danke im Voraus
gruß walter


  

Betrifft: AW: Wieso Change nicht... von: Hajo_Zi
Geschrieben am: 10.11.2012 10:20:25

Hallo Walter,

Du hast die Reakltion auf Einghabe abgeschaltet mit
Application.EnableEvents = False
Darum geht Change nicht.

GrußformelHomepage


  

Betrifft: AW: Wieso Change nicht... von: walter
Geschrieben am: 10.11.2012 10:27:02

Hallo Hajo,
danke für die schnelle Meldung, dies ist das Makro was vorher einwandfrei lief:

Private Sub Worksheet_Change(ByVal Target As Range)
    
    '------ das 1. --------------------------------
    Dim rngRange As Range
    Set rngRange = Intersect(Range("V4:V" & Rows.Count), Target)
    If Not rngRange Is Nothing Then
        Application.EnableEvents = False
        rngRange.Offset(0, -2).FormulaR1C1 = "=IF(RC2<>"""",TODAY(),"""")"
        rngRange.Offset(0, -2).Value = rngRange.Offset(0, -2).Value
        Application.EnableEvents = True
    End If
    Application.EnableEvents = True
  '-------- das 2. -------------------------------
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("AA:AA")) Is Nothing Then
        Application.EnableEvents = False
        With Target
'Wenn - an 2.Stelle:
            If Mid(.Text, 2, 1) = "-" Then
                .Value = Application.WorksheetFunction.Substitute(Application.WorksheetFunction. _
 _
 _
                    Substitute(Target, "-", ""), " ", "")
                .NumberFormat = "0 ""-"" 000 00000"
'Wenn Eingabe mit 06 beginnt:
                ' ElseIf Left(.Text, 2) = "06" Then
                ' ElseIf Left(.Text, 2) = "06" Or Left(.Text, 1) = "6" Then
            ElseIf Left(.Text, 2) = "00" Or Left(.Text, 1) >= "0" Then
                
                .Value = Application.WorksheetFunction.Substitute(Target, " ", "")
                .NumberFormat = " 00 000 00000 "      'so stand es
            End If
        End With
        Application.EnableEvents = True
    End If
  End Sub
gruß walter


  

Betrifft: AW: Wieso Change nicht... von: Hajo_Zi
Geschrieben am: 10.11.2012 10:29:34

Hallo Walter,

in dem Makro wiord es wieder eingeschaltet. Du hast es in einem anderfen Makro nicht wieder einschaltet bzw. bei Fehler beendet ohne einschlaten.

Gruß Hajo


  

Betrifft: Kann man testen ? von: walter
Geschrieben am: 10.11.2012 10:40:01

Hallo Hajo,
kann man das Testen und anzeigen lassen welcher Zustand ?
mfg walter


  

Betrifft: AW: Kann man testen ? von: Hajo_Zi
Geschrieben am: 10.11.2012 10:43:49

Hallo Walter,

msgbox Application.EnableEvents

Gruß Hajo


  

Betrifft: Danke -) von: walter
Geschrieben am: 10.11.2012 10:46:51

Hallo Hajo,
danke und schönes Wochenende,
gru walter


 

Beiträge aus den Excel-Beispielen zum Thema "Wieso Change nicht..."