Я создаю функцию для суммирования всех ячеек в диапазоне следующим образом:
Function SumTest(rg As Range) As Double
Debug.Print "SumTest..."
Dim s As Double
s = 0 ' ------> Show runtime error "Overflow" at this line
Dim i As Range
For Each i In rg.Cells
s = s + i.Value2
Next i
SumTest = s
End Function
Когда я запускаю функцию в непосредственном окне, она жалуется на ошибку времени выполнения «Переполнение», и очень странно, что ошибкасообщение исчезает после комментирования строки «Debug.Print».Функция Dbbug.Print
относится к двойной инициализации переменной?И почему здесь происходит переполнение (я просто назначаю ноль переменной с Double
типом данных)?
Дополнительная информация добавлена:
Я проверяю функцию сразуокно как ?Sumtest(Range("A1:C1"))
(диапазон A1:C1
заполнен тривиальными данными теста 1 2 3
).И версия Excel - Office365 для Mac.
Чтобы упростить тест, я использую другую более короткую программу, такую как:
Function SumTest2() As Double
Dim s As Double
Debug.Print "SumTest2"
s = 0 ' ---> Still "Overflow" here
SumTest2 = s
End Function
После тестирования нескольких программЯ рассматриваю это, возможно, ошибка для Excel 2016 на Mac.Кажется, что если вы используете Debug.print
, тогда вы не можете присвоить значение (0 или другое значение) переменной с типом данных Double
(целочисленные, строковые или другие типы данных в порядке ...).Ниже приведена еще одна типичная тестовая программа:
Sub DoubleTest2()
Dim a As Double
a = 0
Debug.Print a ' when this line appears, next assignment to variable `b` will complain `overflow` error message.
Dim b As Double
b = 100# ' *overflow error message*
Debug.Print b
End Sub