2014-09-17 5 views
1

Сегодня утром я решил открыть свою книгу глупых вопросов и нашел один вопрос, который я не могу выбраться из головы (возможно, вопрос должен быть в обзоре кода, но вы говорите меня).Объявление и присвоение значения переменной

Так вот он идет - теперь в VBA вы обычно бы объявить переменную и присвоить ей значение, что я хотел бы использовать в качестве стандарта, как это:

Dim n as Integer 
n = 1 

Или с объектами с помощью Set:

Dim wb as Worksheet 
Set wb = ActiveSheet 

Но есть и другой синтаксис возможность здесь, что позволяет как объявить и присвоить значение в той же строке, делая это (назовём это альтернативный способ):

Dim n as Integer: n = 1 
Dim wb as Worksheet: Set wb = ActiveSheet 

Теперь у нас есть два способа объявить и назначить переменную. То, что моя книга глупого не говорит, есть ли какая-то причина или случай, когда альтернативный путь не будет работать или почему он почти никогда не используется? На мой взгляд, если переменная находится в начале программы с учетом значения, было бы легче прочитать синтаксис кода, используя альтернативный синтаксис.

О, пожалуйста, мудрые и могучие члены Совета, просветите меня, пожалуйста, когда я буду использовать или использовать альтернативный способ?

ответ

2

На самом деле нет никакой разницы; от «:» это просто разделитель строки форматирования, если вы будете - не условность специфичны для объявления переменной:

http://msdn.microsoft.com/en-gb/library/ba9sxbw4.aspx

В некоторых случаях, используя это делает код более читаемым, но очевидно, что оно также имеет потенциально путать :)

+1

+ 1 'не конвенция, специфичная для объявления переменной' True :) –

+0

Кажется вполне явным. Жесткий я придумал дополнительный вопрос - как насчет того, когда он находится в таком заявлении: «rng.PasteSpecial Paste: = xlPasteAll'? Будет ли разрешено писать эту «rng.PasteSpecial Paste» и следующую строку '= xlPasteAll'? –

+0

Нет, ': =' присваивает ожидаемый ** параметр аргумента ** - см. Здесь http://stackoverflow.com/questions/6548723/what-does-a-colon-equals-in-vb-net-do – Tim

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