В чем смысл использования символа #
в Excel VBA?Использование символа # (hash) в макросе VBA
Он используется так:
a = b /100#
Я не понимаю значение #
после 100
?
В чем смысл использования символа #
в Excel VBA?Использование символа # (hash) в макросе VBA
Он используется так:
a = b /100#
Я не понимаю значение #
после 100
?
Символ декларации типа для Double - это знак числа (#). Также называется HASH
Другие символы объявления типа являются:
Не понимают значение # здесь.
Это означает, что, когда выражение вычисляется, число перед символом объявления типа рассматривается в качестве конкретного типа данных, а не как варианты.
См. Этот пример, который в основном такой же.
Sub Sample1()
Dim a#
a = 1.2
Debug.Print a
End Sub
Sub Sample2()
Dim a As Double
a = 1.2
Debug.Print a
End Sub
EDIT
Позвольте мне объяснить это немного более подробно.
Рассмотрим эти две процедуры
Sub Sample1()
Dim a As Double, b As Integer
b = 32767
a = b * 100
Debug.Print a
End Sub
Sub Sample2()
Dim a As Double, b As Integer
b = 32767
a = b * 100#
Debug.Print a
End Sub
Вопрос: Один из них не получится. Вы можете догадаться, какой из них?
Ans: 1-я процедура Sub Sample1()
не удастся.
Причина:
В Sample2
, когда вы b * 100#
результат расчета будет типа Double
. Поскольку он находится в пределах Double, поэтому вычисление завершается успешно, и результат присваивается переменной a
.
Сейчас в Sample1
, когда вы делаете b * 100
, результат вычисления будет иметь тип Integer
, так как оба операнда имеют тип integer. Но результат вычисления превышает пределы хранилища Integer. В результате он выйдет из строя.
Надеюсь, это поможет :)
+1 Еще со времен старого VB я нашел эти ярлыки очень удобными. :) –
@PradeepKumar: Да, эти ярлыки удобны, но я их никогда не любил :) Я всегда был очень «экспрессивным» с моими заявлениями, я думаю: P –
Очень хорошо объяснено. Я видел, как многие разработчики путались с этим. Они, похоже, не могут отличить тот факт, что переменная памяти, используемая для вычисления, отличается от целевой переменной назначения, а их типы данных могут быть разными. :) –