Смешное обозначение С#
что это значит?
if CDbl(Trim(Range("M" & r).Text)) > 0# then...
что делает?
и что делает cdbl?
Ответы
Ответ 1
* Вот чит-лист для конверсий DataType *
Конец с:
$ : String
% : Integer (Int32)
& : Long (Int64)
! : Single
# : Double
@ : Decimal
Начните с:
&H : Hex
&O : Octal
Преобразовать в:
CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CLngLng(expression) (Valid on 64-bit platforms only.)
CLngPtr(expression)
CSng(expression)
CStr(expression)
CVar(expression)
Ответ 2
CDbl()
преобразовать выражение в Double:
Тип данных, который содержит плавающие точки с двойной точностью номера в виде 64-разрядных номеров в диапазоне -1.79769313486231E308 - -4.94065645841247E-324 для отрицательных значений; 4.94065645841247E-324 - 1.79769313486232E308 для положительных значений.
"#" является символом объявления типа для Double.
После числа с этим символом означает, что он будет обрабатывать число как двойное, вместо того чтобы пытаться угадать, какой точный тип переменной использовать (он, скорее всего, обработал бы 0 как целое без этого)
Ответ 3
Visual Basic использует знак фунта (#) для указания значений двойной точности. Таким образом, 0#
принудительно обрабатывает эту константу как тип double. CDbl
преобразует выражение в двойной тип. * Double означает плавную точку с двойной точностью.
Ответ 4
CDbl передает содержимое в двойное значение. Параметр # указывает его числовое двойное значение. VB и VBA иногда очень прощают, когда вы имеете дело с цифрами, что может оказаться опасным!