Вызов нескольких переменных в другом подразделе

#excel #vba

#excel #vba

Вопрос:

У меня проблема, когда я пытаюсь использовать переменную, созданную в подпрограмме, в другой подпрограмме. В следующем примере я создаю переменные Power_Origine, Power_Destination, … в подразделе0, я могу использовать одну из них в подразделе1, но я не могу использовать более 1 переменной в одной подпрограмме (часть 2).

 Sub part0()

Power_Origine = 1
Description_Origine = 2
KnownUser_Origine = 3
Power_Destination = 1
Description_Destination = 2
KnownUser_Destination = 3


part1 (Power_Destination)
part2 (Power_Origine, Power_Destination, Description_Destination, KnownUser_Destination)
'part2 Power_Origine, Power_Destination, Description_Destination, KnownUser_Destination ' This does not work either

End Sub


Sub part1(Power_Destination As Integer)
MsgBox Power_Destination
End Sub


Sub part2(Power_Origine As Integer, Power_Destination As Integer, Description_Destination As Integer, KnownUser_Destination As Integer)
MsgBox "Hello " amp; Power_Destination amp; Description_Destination
End Sub
 

Как я могу вызвать эти 4 переменные (Power_Origine, Power_Destination, Description_Destination, KnownUser_Destination) в части 2 подпрограммы?

Спасибо.

Ответ №1:

но я не могу использовать более 1 переменной в одной подпрограмме (часть 2)

Вы можете. Просто удалите ( и ) . Так что это становится

 part2 Power_Origine, Power_Destination, Description_Destination, KnownUser_Destination 
 

или использовать

 Call part2(Power_Origine, Power_Destination, Description_Destination, KnownUser_Destination)
 

Это то же самое, что и выше. Вы все равно можете получить сообщение об ошибке, потому что вы объявили Power_Origine As Integer, Power_Destination As Integer, Description_Destination As Integer, KnownUser_Destination As Integer in part02 , но part0 они есть Variants . Объявите их как Integer in part0 , и это сработает 🙂

 Sub part0()
    Dim Power_Origine As Integer
    Dim Description_Origine  As Integer
    Dim KnownUser_Origine  As Integer
    Dim Power_Destination  As Integer
    Dim Description_Destination As Integer
    Dim KnownUser_Destination  As Integer

    Power_Origine = 1
    Description_Origine = 2
    KnownUser_Origine = 3
    Power_Destination = 1
    Description_Destination = 2
    KnownUser_Destination = 3

    part1 Power_Destination
    part2 Power_Origine, Power_Destination, Description_Destination, KnownUser_Destination
End Sub

Sub part1(Power_Destination As Integer)
    MsgBox Power_Destination
End Sub

Sub part2(P_Orig As Integer, P_Dest As Integer, D_Dest As Integer, K_Dest As Integer)
    MsgBox "Hello " amp; P_Dest amp; D_Dest
End Sub
 

Вы также можете прочитать о передаче переменных по ссылке и по значению

Комментарии:

1. Это именно то, что я искал! Спасибо!