Excel VBA переполняется при разделении двух дублей

#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. Спасибо! Я забыл проверить это.