2015-03-31 3 views
1

См. Ниже VBE сообщает, что ожидает «=» на линии 3, несмотря на то, что .Add является Sub, я не понимаю, почему?VBA Странный синтаксис

1 Sub Set_Params(key As String, value As Variant) 
2  Dim Tranasitions as Collection 
3  Transitions.Add (value, key) 
4 End Sub 
+1

У вас есть пробел после 'Добавить'. – miradulo

+0

Я просто протестировал его без этого места :((тот же результат – sgp667

ответ

2

Это потому, что ваш код не знает, что Tranasitions есть, у вас есть опечатка в объявлении (Dim линии).

Так, чтобы исправить это, исправить объявление:

Dim Transitions as Collection 

А затем удалите () от вызова, вы не используете их с подводными лодками в VBA (если не ставить Call спереди):

Transitions.Add value, key 
-1

Во-первых, обратитесь к коллекции с использованием согласованного имени.

Затем используйте Call Transitions.Add и т.п. или опустите скобки.

У Vba этот тайный синтаксис вызова.

+0

Минус один? Я здесь правильно. Делал это в течение многих лет – Bathsheba

+0

'Call' - устаревшее ключевое слово из древней версии языка. – RubberDuck

+0

На самом деле нет. это очень тонко отличается от Google. – Bathsheba

0

Удалить круглые скобки.

Sub Set_Params(key As String, value As Variant) 
    Dim Transitions as New Collection 
    Transitions.Add value, key 
End Sub 

Кроме того, вы должны создать новый экземпляр Transitions. О, и вы написали Transitions как Tranasitions когда вы это объявили. Поверните Option Explicit, чтобы этого больше не было.

Смежные вопросы