2014-07-04 3 views
0

두 개의 double을 나눌 때 오버플로 오류가 발생하며 그 이유를 알 수 없습니다. 지금두 개의 double을 나눌 때 Excel VBA 오버 플로우가 발생했습니다.

'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 

처음에는 같이

여기 내 코드입니다, ctLong로 선언,하지만 난 그 문제를 해결할 수 있는지 확인하기 위해 Double로 변경,하지만하지 않았다되었다.

또한 마지막 줄을 Avg = CDbl(x/ct)으로 변경하려고했지만 동일한 오류가 발생합니다.

cell.Value의 값은 항상 실제 숫자이며, 일반적으로 0에서 약 9,000,000 사이이며, 때로는 17,000,000까지 올라갑니다. 약 20,000보다 큰 숫자는 거의 항상 정수입니다.

+2

"Dim x, ct As Double"크기가 변형 된 x입니다. – pnuts

+0

오버플로를 일으키는 값을 트랩해야합니다. 중단 점을 코드에 유지하고 오류가 발생하면 변수가 왜 발생하는지 확인하십시오. 그것은 거기에있는 데이터에 따라 다르지만, 어떤 종류의 에러 트랩을 추가하거나 '분모하기 전에 데이터를 사전 점검'하여 코드를 '더 안전하게'만들 필요가 있습니다. (0 분모 등을 확인하십시오.) – hnk

+0

@hnk 감사합니다! 나는 0의 분모를 확인하는 것을 잊어 버렸고, 그것은 문제를 일으켰다. – sjcglads

답변

2

0으로 나누기 오류입니다. VBA가 "오버플로"로보고했습니다.

+0

감사합니다. 나는 그것을 잊어 버렸다. – sjcglads