Range.Value
возвращает Variant
, чей подтип зависит от содержимого ячейки.
Учитывая #N/A
, #VALUE
, #REF!
или любое другое значение ошибки ячейки, он возвращает Variant/Error
, который не может быть приведен ни к чему, кроме Variant
- пытаясь сравнить его с строка или числовое значение или выражение приведут к ошибке 13 «несоответствие типов».
Вы можете избежать этой ошибки во время выполнения, оценив, является ли вариантный подтип Error
, используя функцию IsError
, в идеале, сначала записав значение ячейки в локальную переменную Variant
, поэтому вам не нужно обращаться к клетка дважды.
Учитывая пустую ячейку, которая не имеет ни формулы, ни значения, ни содержимого вообще, она возвращает Variant/Empty
; функция IsEmpty
может использоваться для проверки этого подтипа варианта.
Учитывая значение Date
, возвращается Variant/Date
. При любом числовом значении возвращается Variant/Double
. Если задано значение TRUE
или FALSE
, возвращается Variant/Boolean
.
И, учитывая String
значение, он возвращает Variant/String
.
Обратите внимание, что член по умолчанию класса Range
является скрытым свойством [_Default]
с двумя необязательными параметрами:
Если параметры не предоставлены, явный вызов .Value
эквивалентен. Явные вызовы членов обычно должны быть предпочтительнее неявных вызовов членов по умолчанию, и неявные или явные вызовы должны быть согласованными:
If ws.Cells(3 + j, 3) = "SW" Then ' implicit: .Value
wssum.Cells(3 + k, 2 + i).Value = busum
Else
wssum.Cells(3 + k, 14 + i).Value = busum
End If