Moin auch,
schon wieder ich
Ich rufe ein Sub aus einem Sub auf. Dabei werden rund 100 Variablen übergeben, die ich per Type-Anweisung als Long definiert habe. Die Übergabe erfolgt mit der Anweisung byRef. Beim Ablauf erhalte ich den Laufzeitfehler 1004, was daran liegt, dass das Programm versucht, einen Wert in eine Zelle zu schreiben, wobei die Spaltennummer nicht definiert ist. Die liegt nämlich in einer der hundert Variablen und geht verschütt. Lustigerweise werden die Inhalte der ersten 30 Variablen dabei im Lokal-Fenster nicht angezeigt, erst ab 31, und die 31 verursacht den Fehler.
Zum Verständnis der Code:
Type HD
pubRegHD1 As Long
...
pubRegHD96 As Long
End Type
Sub BuildRealPhysChem(startpt, strtss, subcnt, nextrr, vaicnt)
cc = 4
Do Until Trim(Worksheets(pubwsresults).Cells(1, cc).VALUE) = ""
cc = cc + 1
Loop
Worksheets(pubwsresults).Select
Columns(cc).Select
Selection.NumberFormat = "@"
Worksheets(pubwsresults).Cells(1, cc).VALUE = "Zustand"
Worksheets(pubwsresults).Cells(2, cc).VALUE = "1013\_001"
Worksheets(pubwsresults).Cells(3, cc).VALUE = "STRING"
pubRegHD1 = cc 'entsprechend für alle anderen pubRegHD's
If BV$ = "+BV" Then
Select Case prop$
Case "1013001"
ActiveBVfor1013001$ = "Y"
vaicnt = vaicnt + 1
Call CntRealPhysChem(FilStr$, nextrr, rr, HD)
... mit end case etc.
End Sub
Private Sub CntRealPhysChem(ByVal FilStr$, nextrr, rr, HD)
blabla
If... Then
Call testRealPhysChem(laufzahl, inside, FilStr$, pubwsresults, nextrr, HD)
End If
End Sub
Private Sub testRealPhysChem(ByVal FilStr$, nextrr, rr, HD)
Select case...
Case "1013\_001\_VALUE"
1013\_001\_VALUE = Trim(Worksheets(FilStr$).Cells(inside, 2).VALUE)'entprechend für rund 100 Werte
End Select
Worksheets(pubwsresults).Cells(nextrr, pubRegHD1).VALUE = 1013\_001\_VALUE
Worksheets(pubwsresults).Cells(nextrr, pubRegHD2).VALUE = 1013\_001\_EC\_TEMP\_PREC ' usw für rund 100 Werte
End Sub
Beim Aufruf der Zelle (nextrr,pubRegHD31) kommt der Laufzeitfehler. Lokalfenster sagt pubRegHD31="" (sowie für alle folgenden pubRegHDxx), die Werte für pubRegHD1 bis pubRegHD30 werden im Lokalfenster nicht angezeigt. Die Zellen (nextrr,pubRegHD1) bis (…,pubRegHD30) werden korrekt gefüllt.
Hilft das, umzu helfen?
Ralph