Ich spiele mit dem Aufruf eines sub(), aber bekomme immer den Fehler "Benutzerdefinierter Typ nicht definiert". Konnte nicht herausfinden, nachdem ich versucht habe, Variablen als Array zu deklarieren. Wäre dankbar jede Anleitung dazu:VBA: Übergabe von Variablen an sub() mit benutzerdefiniertem Typ
Public Type Whatever
ppp As String
qqq As Long
rrr As Single
End Type
Sub isthisworking()
Dim thisis() As Whatever
Dim i As Long
Dim athing As Long
For i = 0 To 5
With thisis(i)
.ppp = i & "p"
.qqq = i * 2
.rrr = i^3
End With
athing = 20
beingcalled thisis(), athing
End Sub
Public Sub beingcalled(ByRef thisis() As Whatever, athing As Long)
Dim cycles As Long
cycles = UBound(thisis)
For i = 0 To cycles - 1
With thisis(i)
Debug.Print i & ": " & .ppp & "," & .qqq & "," & .rrr
End With
Next
End Sub
Sobald ich dimensionieren 'thisis' richtig, fügen Sie' Next' zu Ihre for-Schleife, und ändern Sie den Aufruf 'thisisis(), athing' zu 'thisis, athing' genannt wird, funktioniert es ohne Probleme. –
Danke @Johncoleman. Ganz offensichtlich noch nicht auf der Dimensionierung. Oder schneiden und fügen Sie Fähigkeiten entweder! – user110084
Wann müssen Sie tatsächlich die CALL-Anweisung verwenden? Und warum ist das so, dass bei Aufruffunktionen eine Funktion (var1, var2, ....) verwendet werden muss, aber für sub die Klammern weggelassen werden? Gibt es jemals einen Bedarf für sie? – user110084