AW: DIm und SET
14.06.2023 16:38:40
Daniel
so wie ich schrieb.
du hast immer noch unvollständige Referenzierung drin, dh es fehlt die Angabe des Workbooks und damit referenziert Excel dann automatisch das aktive Workbook und das ist das falsche.
With wbkDaten
Set wksMeßdatenVJ = .Worksheets(Worksheets.Count - 1)
Set wksMeßdatenJ = .Worksheets(Worksheets.Count)
End With
damit hier die Anzahl der Workbooks immer in der richtigen Mappe ermittelt wird, musst du auch vor Worksheets.Count das Workbook angeben (das hatte ich dir schon in meiner ersten Antwort an dich geschrieben.
du hast zwar jetzt die WITH-Klammer aufgemacht, aber damit auch das Workbook aus der WITH-Klammer eingesetzt wird, musst du auch den Punkt setzen, also
With wbkDaten
Set wksMeßdatenVJ = .Worksheets(.Worksheets.Count - 1)
Set wksMeßdatenJ = .Worksheets(.Worksheets.Count)
End With
es ist zwar nur ein kleiner Punkt, aber er macht viel aus.
noch ein paar weiter Punkte:
du hast jetzt zwar die WITH-Klammer angewendet, aber noch nicht richtig verstanden, das sieht man im folgecode.
Wenn du schon die WITH-Klammer verwendest, dann benutze sie auch.
aus
With wksMeßdatenJ
MsgBox wksMeßdatenJ.Name & " ; " & wksMeßdatenVJ.Name
ZählerwechselJN = IIf(wksMeßdatenJ.Cells(Zeile, "R") > 0 Or wksMeßdatenJ.Cells(Zeile, "T") > 0, True, False)
MsgBox Zeile & " ; " & CDbl(wksMeßdatenJ.Cells(Zeile, "R")) & " ; " & _
CDbl(wksMeßdatenJ.Cells(Zeile, "T")) & " ; " & ZählerwechselJN
End With
wird:
With wksMeßdatenJ
MsgBox .Name & " ; " & wksMeßdatenVJ.Name
ZählerwechselJN = IIf(.Cells(Zeile, "R") > 0 Or .Cells(Zeile, "T") > 0, True, False)
MsgBox Zeile & " ; " & CDbl(.Cells(Zeile, "R")) & " ; " & _
CDbl(.Cells(Zeile, "T")) & " ; " & ZählerwechselJN
End With
also überall, wo normalerweise das Objekt steht, dass du beim letzten WITH definiert hast, bleibt nur der Punkt am Anfang.
und nochwas:
Public ZählerwechselJN, eZählerwechselJN, wZählerwechselJN As Boolean
hier wird nur die wZählerwechselJN boolean, die anderen werden Variant.
in VBA gibt es keine gruppendeklaration, man muss für jede Variable einzeln den Typ angeben, auch wenn man in einer Zeile deklariert
Public ZählerwechselJN as boolean, eZählerwechselJN as boolean, wZählerwechselJN As Boolean
meistens merkt man das nicht, weil in Variant der Typ ja passend zum zugewiesenen Wert aktiviert wird, aber man sollte es wissen.
Gruß Daniel