Hi Jo,
Es Funktioniert, nun hatte ich im Kopf die Sub schon fertig
geschrieben … aber es gab da ja noch dieses Problem ://
Invalid Procedur call or argument
(Txt_Part = Mid(HWLine, pos1, pos2 - pos1)'siehe unten.
wenn ich mir HWLine in der HWView Funktion anzeigen lasse ist
alles ok. Also die Unit Informationen sind drin.
OK.
Public HWLine As String
…
Teil = Split(Txt, „“)
For i = LBound(Teil) To UBound(Teil)
HWLine = Left(Teil(i), InStr(Teil(i), „“))
ViewUnit
Next
Private Sub ViewUnit()
Dim Txt_Part As String
Dim pos1 As Long
Dim pos2 As Long
pos1 = InStr(HWLine, „“) + 14
pos2 = InStr(HWLine, „“)
Txt_Part = Mid(HWLine, pos1, pos2 - pos1)
List1.AddItem Txt_Part
End Sub
Der Fehler tritt auf, wenn ‚‘ nicht enthalten ist. Dann ist pos1=0 und pos2=0. Wenn ich nun die Variablen durch Zahlen ersetze, steht da:
Txt_Part = Mid(HWLine, 0, 0)
Das Zeichen Null gibt es aber nicht, Ein String beginnt mit Zeichen 1.
Um den Fehler zu vermeiden sollte da stehen:
If Pos1 0 And Pos2 0 Then
Txt\_Part = Mid(HWLine, pos1, pos2 - pos1)
Else
Txt\_Part = ""
End If
Ich vermute, das ist das Problem. U.U. kann das auch wieder durch die Schreibweise ausgelöst werden, wenn nach großen Zeichen gesucht wird, wo kleine stehen oder umgekehrt.
Ich würde der Schreibweise nicht trauen und es so schreiben:
pos2 = InStr(UCase(HWLine), „“)
Oder kommt der String gar nicht in der Prozedur an?
Public HWLine As String
geht doch so gar nicht in der Form, oder irre ich mich da?
(Ja, war ein Irrtum, ich habe inzwischen nachgesehen. Public ist hier trotzdem eher nicht angebracht.)
Wenn Du einen bestimmten String an eine Prozedur übergeben willst, geht das so:
ViewUnit HWLine
Private Sub ViewUnit(ByVal HWLine as String)
'....
End Sub
Und wenn Du einen Wert zurück haben möchtest, machst Du eine Funktion daraus. Ach ja, die Deklaration oben fällt dann natürlich weg, führt zu einem Fehler.
Gruß, Rainer