2016-08-12 3 views
0

Новое для VBA, но многолетний опыт работы с ассемблером, C и C#. Я создал Private Sub под названием CPScenarioData (wsname как String, rownum As Integer). Когда я вызываю процедуру с помощью оператора:Ошибка компиляции с подпроцессом

CPScenarioData(wsname, l) 

Я получаю сообщение об ошибке «Ошибка компиляции: Ожидаемые =», однако, когда я предшествовал заявление с вызовом не происходит никакой ошибки, почему это. У меня есть другие частные субтитры, которые я вызываю без использования Call, которые работают нормально. Я уверен, что есть простой ответ или ошибка, которые я сделал, и буду чувствовать себя очень застенчивым, когда увижу ответ, но это жизнь. Я использую Excel 2013 VBA. Спасибо за помощь.

+1

Потерять круглые скобки –

+0

Возможный дубликат [Каковы правила, регулирующие использование скобок в вызовах функций VBA?] (Http://stackoverflow.com/questions/5413765/what-are-the-rules-government-usage- of-brackets-in-vba-function-calls) –

ответ

1

Это причуда (особенность по вкусу) VB. Чтобы вызвать суб, вы не включаете скобки. Так просто введите:

CPScenarioData wsname, 1 

Обычно скобки используются для обозначения функции, которая возвращает значение. В VB вы должны предоставить переменную для получения возвращаемого значения. (Следовательно, ошибка компиляции для missing =; ожидается, что a = CPScenario (wsname, 1)).

Добавление слова Call позволяет удерживать скобки для Subs (эквивалентно C# void).

+0

Да, я всегда получал такую ​​же ошибку и не знал причины. Благодаря! – PartyHatPanda

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