#vba #excel #office-2010
#vba #excel #office-2010
Вопрос:
Я получаю ошибку переполнения при попытке разделить два двойных значения, и я не могу понять, почему.
Вот мой код в том виде, в каком он есть сейчас
'x will be used to sum the elements
Dim x, ct As Double
x = 0
ct = 0
For Each cell In Range(rng)
If cell.Offset(, offset1).Value = Crit1 And cell.Offset(, offset2).Value = Crit2 Then
x = x cell.Value
ct = ct 1
End If
Next
'Divide by count
Avg = x / ct
Сначала ct
было объявлено как Long
, но я изменил его на Double
, чтобы посмотреть, может ли это исправить, но этого не произошло.
Я также пытался изменить последнюю строку на Avg = CDbl(x / ct)
, но получаю ту же ошибку.
Значения в cell.Value
всегда будут действительными числами, обычно в диапазоне от 0 до примерно 9 000 000, иногда доходя до 17 000 000. Числа, превышающие примерно 20 000, почти всегда являются целыми числами.
Комментарии:
1. Вам нужно перехватить значения, вызывающие переполнение. Сохраняйте точку останова в своем коде, и когда она выдает ошибку, следите за переменными, чтобы понять, почему это происходит. Это зависит от содержащихся в нем данных, но вам нужно сделать код «более безопасным», добавив какой-либо вид ловушки ошибок или предварительно проверить данные перед разделением (проверьте наличие знаменателя 0 и т.д.)
2. @hnk Спасибо! Я забыл проверить наличие знаменателя 0, и это было причиной проблемы.
Ответ №1:
Ошибка деления на ноль. VBA просто сообщила об этом как о «переполнении».
Комментарии:
1. Спасибо! Я забыл проверить это.