Я играю с вызовом sub(), но продолжаю получать ошибку «Определенный пользователем тип не определен». Невозможно разобраться, попробовав различные способы объявления переменных как массива. Был бы признателен за любые рекомендации по этому вопросу:VBA: передача переменных в sub() с настраиваемым типом
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
После того, как я размерности 'thisis' правильно, добавьте' Next' в ваш for-loop, и измените вызов 'becalled thisis(), athing' to 'allcalled thisis, athing', он работает без проблем. –
Спасибо @Johncoleman. Понятно, что еще не до размеров. Или вырезать и вставить навыки! – user110084
Когда вам нужно использовать инструкцию CALL? И почему это связано с вызовами функций, вам нужно использовать somefunction (var1, var2, ....), но для sub круглые скобки опущены? Есть ли необходимость в них? – user110084