Clever-Excel-Forum

Normale Version: [VBA] Laufzeitfehler - Bitte um Hilfe
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

folgendes Script:
Code:
Sub Filterabfrage()
Dim lngRow As Long
With Worksheets("Import")

If ActiveSheet.FilterMode Then
    For lngRow = 4 To Cells(3, 1).End(xlDown).Row
        If Not Rows(lngRow).Hidden Then Exit For
    Next
    .Range("A1") = CStr(lngRow)
    Tabelle4.Cells(2, 6).FormulaLocal = "=WENNFEHLER(" & "I" & lngRow & "*Budget_pro_Zimmer;""Kein Wert"")"
    'letzte Zeile: " & CStr(Cells(3, 1).End(xlDown).Row)
 Else
     .Range("A1") = ""
    
End If
End With
End Sub

.. erzeugt beim Ausführen einen Laufzeitfehler (die methode range für das objekt _worksheet ist fehlgeschlagen) in Zeile:
    .Range("A1") = CStr(lngRow)



Jemand eine Idee?
Danke & Gruss
Ok, nach längerem Test habe ich nun herausgefunden, dass der Fehler nur auftaucht, wenn ich ihn hier abrufe:

Private Sub Worksheet_Calculate()
  '  Call Filterabfrage
End Sub

Falls es jemanden interessiert, ich habe es nun wie folgt gelöst:

Code:
Private Sub Worksheet_Calculate()
Static E2_Alt As Double
If Range("E2").Value <> E2_Alt Then
   E2_Alt = Range("E2").Value
   Call Filterabfrage
End If
End Sub

Trotzdem Dank an euch Smile
Hallo,

Zitat:Ok, nach längerem Test habe ich nun herausgefunden, dass der Fehler nur auftaucht, wenn ich ihn hier abrufe:

Private Sub Worksheet_Calculate()
  '  Call Filterabfrage
End Sub

... und ich frage Dich mal ganz neugierig, was rufst Du da eigentlich ab?
Hallo Peter,

das Makro Filterabfrage hat Jules im ersten Beitrag gepostet.

Hallo Jules,

wenn Du da ein Value noch anhängst, dürfte es gehen.

Code:
.Range("A1").Value = CStr(lngRow)
Hallo Peter,

siehe Stefan - Ich frage ab, ob ein Filter aktiv ist und lasse mir die erste sichtbare Zeile nennen...?!

Hallo Stefan,

danke. Das werde ich mal testen. So, wie ich es aktuell geändert habe, funktioniert es aber immerhin Smile

Gruss