что это означает?
if CDbl(Trim(Range("M" & r).Text)) > 0# then...
что делает #?? и что делает cdbl?
CDbl ()
преобразует выражение в Double:
Тип данных, который содержит числа с плавающей запятой двойной точности как 64-битные числа в диапазоне - От 1,79769313486231E308 до -4,94065645841247E-324 для отрицательных значений; От 4.94065645841247E-324 до 1.79769313486232E308 для положительных значений.
«#» - это «символ объявления типа» для Double. После числа с этим символом это означает, что число будет обрабатываться как двойное, а не пытаться угадать, какой именно тип переменной следует использовать. (без этого 0, вероятно, интерпретировался бы как целое)
CDbl преобразует содержимое в двойное значение. # Указывает, что это числовое двойное значение. VB и VBA иногда довольно снисходительны, когда вы имеете дело с числами, что может оказаться опасным!
Visual Basic использует знак фунта (# ) для обозначения значений двойной точности. Поэтому 0#
заставляет рассматривать эту константу как тип double. CDbl
преобразует выражение к типу double. * Double означает двойную точность с плавающей точкой.