Vielen Dank für deine Antwort,
Ich habe mir schon gedacht, dass ich es irgendwie mit einer init-Methode
lösen muss, aber ich konnte mir nicht vorstellen, dass eine
Programmiersprache die Klassen unterstützt nicht soetwas wie einen
Konstruktor mit Parameterübergabe hat.
Ich brauche aber weiter Unterstützung von euch :) Ich komme an folgendem
Punkt nicht mehr weiter.
Ich habe eine Klasse die enthält folgende Methode und soll dynamisch
eine Collection füllen.
Private Function ParseBlock(anfang As Integer, ende As Integer)
Dim i As Integer
For i = anfang + 1 To ende
Dim v As New CCommand
v.FillCommandEntrysFromLine i
m_CommandCollection.Add v
Next
DebugPrintWholeBlock
End Function
Mein VBA-Script schmiert bei
m_CommandCollection.Add v
komplett ab mit Laufzeitfehler 408
Wie kann ich sicher dynamisch Objekte erzeugen und einer Collection
übergeben ?
Gruß Tobias
Meine CCommand-Klasse sieht so aus:
Private m_SID, m_LID, _
m_CommandData, m_Description, _
m_ExpectedResult, m_Check, m_InternalID As String
Private m_SID_Column, m_LID_Column, m_CommandData_Column,
m_Description_Column, _
m_ExpectedResult_Column As Integer
Private m_CPosition As New CPosition
Public Sub CCommand(sid As String, lid As String, _
Optional command As String = "", _
Optional description As String = "", _
Optional expectedResult As String = "", _
Optional id As Integer = 0)
m_SID = sid
m_LID = lid
m_CommandData = command
m_Description = description
m_ExpectedResult = expectedResult
m_InternalID = id
m_SID_Column = m_CPosition.FindSpalteMitInhalt("SID", "Tabelle1", 1)
m_LID_Column = m_CPosition.FindSpalteMitInhalt("LID", "Tabelle1", 1)
m_CommandData_Column = m_CPosition.FindSpalteMitInhalt("CMD",
"Tabelle1", 1)
m_Description_Column = m_CPosition.FindSpalteMitInhalt("DSCR",
"Tabelle1", 1)
m_ExpectedResult_Column = m_CPosition.FindSpalteMitInhalt("E_RESP",
"Tabelle1", 1)
End Sub
Private Sub Class_Initialize()
m_CPosition = New CPosition
m_SID_Column = m_CPosition.FindSpalteMitInhalt("SID", "Tabelle1", 1)
m_LID_Column = m_CPosition.FindSpalteMitInhalt("LID", "Tabelle1", 1)
m_CommandData_Column = m_CPosition.FindSpalteMitInhalt("CMD",
"Tabelle1", 1)
m_Description_Column = m_CPosition.FindSpalteMitInhalt("DSCR",
"Tabelle1", 1)
m_ExpectedResult_Column = m_CPosition.FindSpalteMitInhalt("E_RESP",
"Tabelle1", 1)
End Sub
Private Sub Class_Terminate()
End Sub
Public Function FillCommandEntrysFromLine(line As Integer) As Boolean
Sheets("Tabelle1").Activate
If Cells(line, 1) = "END" Or Cells(line, 1) = "BLOCK" Then
FillCommandEntrysFromLine = False
Else
m_SID = Cells(line, m_SID_Column)
m_LID = Cells(line, m_LID_Column)
m_CommandData = Cells(line, m_CommandData_Column)
m_Description = Cells(line, m_Description_Column)
m_ExpectedResult = Cells(line, m_ExpectedResult_Column)
End If
End Function
Property Get DiagnosisCommand() As String
DiagnosisCommand m_SID & m_LID & m_CommandData
End Property
Property Get InternalID() As Integer
InternalID = m_InternalID
End Property
Property Let InternalID(id As Integer)
m_InternalID = id
End Property
Public Function DebugPrintCommand()
Debug.Print "SID : " & m_SID & "LID : " & m_LID & "CMD : " &
m_CommandData & "DSCR : " & m_Description & "E_RESP : " &
m_ExpectedResult & "Result : " & "CHECK" & m_Check
End Function