Используйте то же имя для локальной переменной и функции - PullRequest
0 голосов
/ 22 мая 2010

В VBA я хочу использовать имя для локальной переменной, которое я также хотел бы использовать для имени функции. Проблема в том, что форматирование имени функции всегда меняется на форматирование локальной переменной.

Есть ли способ предотвратить это?

Ответы [ 2 ]

2 голосов
/ 22 мая 2010

Я настоятельно рекомендую , а не , используя одноименное имя в целях устранения неоднозначности. Кроме того, если VBA не чувствителен к регистру, он может не знать, ссылаетесь ли вы на функцию или переменную и, таким образом, выдает ошибку времени выполнения (я не думаю, что она компилируется как таковая , но это происходит проприетарному промежуточному p-коду.)

Часто, когда вы хотите, чтобы имена были похожими, может быть полезно добавить знак подчеркивания, например, локальную переменную. Поэтому я рекомендую вам назвать функцию FunctionName и переменную _FunctionName, если вы хотите пойти по этому пути.

Если вы хотите попробовать использовать одно и то же имя для каждого из вас, вам, вероятно, потребуется отредактировать код вне среды IDE, которая переформатирует ваш код. В редакторе, который не пытается автоматически отформатировать, вы можете использовать его принудительно. Тогда вопрос в том, компилируется он или нет - вопрос.

1 голос
/ 22 мая 2010

В Visual Basic каждая функция уже имеет переменную, названную в честь этой функции. Присвоение значения этой переменной - единственный способ установить возвращаемое значение для этой функции.

Следовательно, объявление еще одной переменной с тем же именем создает неоднозначность. Вы не можете сделать это. Это приводит к ошибке Duplicate declaration in current scope.

И если под "локальной" переменной вы подразумевали переменную уровня модуля, то вы не можете сделать это либо: Ambiguous name detected: %s.

И если вы спрашиваете о ситуации, когда функция и переменная с одним и тем же именем принадлежат разным областям, тогда VBA будет использовать случай строки, которая была отредактирована последней. Поэтому, если вы объявляете функцию, а затем объявляете переменную в другом модуле, имя функции изменит регистр. Но если вы затем вернетесь к функции, вернете ее регистр и нажмете Enter, переменная, в свою очередь, изменит свой регистр в соответствии с именем функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...