Microsoft Excel

Herbers Excel/VBA-Archiv

Ereignisabfrage endet in Endlosschleife

Betrifft: Ereignisabfrage endet in Endlosschleife von: Glenn
Geschrieben am: 07.09.2004 12:07:30

Hallo an alle,

bin kurz davor mein Projekt zu beenden. Leider gibt es da diese Endlosschleife:
Wenn in Sheet1 etwas neu berechnet wird, wird in Sheet2 (Worksheet_Activate) ebenfalls ein Makro ausgeführt. Die Ergebnisse aus Sheet2 werden dann wiederum in einer Übersicht in Sheet1 dargestellt (einfacher Zellbezug).
Wenn ich manuell nach Ausführung der Makros aus Sheet2 in Sheet1 wechsle, ist alles richtig. Baue ich aber in das Sheet2-Makro "Sheet1.Activate" ein, hagelt es die Endlosschleife. Manchmal bricht er diese mit dem richtigen Ergebniss auch nach ca. 30s ab. Normal wären höchstens 2s.

Code ("DieseArbeitsmappe"):

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    Application.ScreenUpdating = False
    
    With Worksheets("Sheet1") 'hier scheint er es manchmal nicht zu aktivieren
        .Activate
    End With
    
    Application.ScreenUpdating = True
End Sub

Code ("Sheet2"):
Private Sub Worksheet_Activate()
Dim Sheet1 As Worksheet, Sheet2 As Worksheet
Dim strAF As String
Dim strUR As String

Application.ScreenUpdating = False

Set Sheet1 = Workbooks(Me.Parent.Name).Worksheets("Sheet1")
Set Sheet2 = Workbooks(Me.Parent.Name).Worksheets("Sheet2")
With Sheet1
    strUR = .UsedRange.EntireRow.Address(0, 0)
    If .AutoFilterMode Then
        strAF = .AutoFilter.Range.SpecialCells(xlCellTypeVisible).EntireRow.Address(0, 0)
        Me.Range(strUR).EntireRow.Hidden = True
        Me.Range(strAF).EntireRow.Hidden = False 'bricht teilweise ab und startet neu
    Else
        Me.Range(strUR).EntireRow.Hidden = False
    End If
    .Activate
End With
Application.ScreenUpdating = True
End Sub

Bin für jede Hilfe dankbar! Ich versteh's echt nicht mehr...

Beste Grüße
der glenn
  


Betrifft: AW: Ereignisabfrage endet in Endlosschleife von: Bert
Geschrieben am: 07.09.2004 12:12:37

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    on error goto ErrH
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    
    With Worksheets("Sheet1") 'hier scheint er es manchmal nicht zu aktivieren
        .Activate
    End With
ErrH:    
    Application.ScreenUpdating = True
    Application.EnableEvents = true
End Sub


Bert


  


Betrifft: AW: Ereignisabfrage endet in Endlosschleife von: Glenn
Geschrieben am: 07.09.2004 13:24:44

Hallo Bert,

Danke für die Lösung. Mir fehlte echt nur der Befehl "Application.EnableEvents = False/True", um die Wirkung der Querverweise auf _Calculate auszuschalten.

Riesendank nochmal

der glenn