2016-11-23 1 views
5

Я работаю с Excel некоторое время, но я никогда не читал, в чем разница между этими двумя операторами («независимо от того, я использовал оба») := и = в Excel VBAВ чем разница между: = и = в Excel VBA

+5

Я бы не назвал ': =' an 'operator' - это скорее «спецификатор именованных аргументов». – Comintern

+0

'функция вызова (аргумент: = значение)' говорит, что все аргументы являются необязательными, а их 10, вы хотите передать 5 по имени, тогда также используются переменные, такие как и 'let variable = x' –

ответ

7

Как вы уже знаете, = используется для назначения значений или установки объектов - например i=1

:= с другой стороны (как упоминалось Коминтерн), используется для присвоить значение в какой-то имени аргумента, AFAIK только когда-либо внутри метода или функции.

Рассмотрим следующий пример: вы могли бы использовать что-то вроде MsgBox "Hello World", , "Title1" - указав MsgBox «s аргументы по порядку по умолчанию - в prompt, по умолчанию Buttons -Style в, то Title.

В качестве альтернативы можно было бы использовать := написать MsgBox Title:="Title1", prompt:="Hello world"

Обратите внимание, что

  • порядок аргументов не имеет значения здесь и

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

+4

' = ' как булевой оператор, поэтому важно не случайно использовать '=' вместо ': =' - eg 'MsgBox Title =" Title1 ", prompt =" Hello world "' вероятно, будет приравниваться к 'MsgBox False, False', если' Option Explicit' не использовался. – YowE3K

+0

@ YowE3K Отличная точка! –

1

Возьмем, например, выражениеRange.Find method

. Find (Что, после, Lookin, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

Это является LOT условий, чтобы установить! Но вы просто хотите простой поиск числа 2 в Range("A1:A500"):

Без оператора :=, вы должны использовать запятые, чтобы добраться до любых дополнительных переменных, чтобы установить:

Range("A1:A500").Find(2, , xlValue, , , , , ,) 

С оператором :=, вы можете указать, какие условия вы хотите, не определяя все настройки по умолчанию:

Range("A1:A500").Find(what:=2, lookin:=xlValues) 
+0

Единственный * обязательный * аргумент для диапазона.Найти '' 'Что'; это не так, что вам нужно указать все аргументы - вам нужно указать все аргументы *, которые вы не предоставляете значение для *. –

+0

@ Mat'sMug Уточненный, вам нужно будет использовать запятые, чтобы получить дополнительные значения. – Chrismas007

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