2013-07-10 4 views
0

* указывает, где выделяются моменты, когда я получаю свою ошибку. Если я поставлю первую команду сразу после инструкции else (в той же строке), она будет запускаться один раз. Затем он дает ту же ошибку при втором запуске. Затем я положил его на следующую строку, и он снова ошибся. Пожалуйста помоги.Ошибка времени выполнения «13»: несоответствие типов: Excel, если иное условие

Sub Average_Var_Page() 
Z = 6 
PS1 = 0 
PS = 0 

Do 
If Application.Worksheets("EachStepVar").Range("E" & Z).Value = 0 Then 
    GoTo ZPLUSPS 
Else 
***PS = PS + Application.Worksheets("EachStepVar").Range("E" & Z).Value**** 
    PS1 = PS1 + 1 
End If 

ZPLUSPS: 
Z = Z + 1 

Loop Until IsEmpty(Application.Worksheets("EachStepVar").Range("E" & Z)) 

X = PS/PS1 
Application.Worksheets("EACHsTEPVAR").Range("P1").Value = X 


End Sub 

ответ

0

дайте следующее попробовать и посмотрите, не имеет значения! Это гарантирует, что вы добавите один и тот же тип и, надеюсь, сохраните формулу.

Sub Average_Var_Page() 
Z = 6 
PS1 = 0 
PS = 0 

Y = Application.Worksheets("EachStepVar").Range("E" & Z).Value 

Do 
If Y = 0 Then 
    GoTo ZPLUSPS 
    Else 
    PS = PS + Val(Y) 
    PS1 = PS1 + 1 
End If 

ZPLUSPS: 
Z = Z + 1 

Loop Until IsEmpty(Application.Worksheets("EachStepVar").Range("E" & Z)) 

X = PS/PS1 
Application.Worksheets("EACHsTEPVAR").Range("P1").Value = X 


End Sub 
+0

Если я перемещаю Y = Application.Worksheets («EveryStepVar»). Диапазон («E» и Z). Входите в цикл, это сработало !!! Thanks – Pike7893

+0

Нет проблем! Рад, что это сработало! :) – Conquistador

0

Я думаю, что вам необходимо убедиться, что ваше значение является числом перед его добавлением. Попробуйте использовать что-то вроде IsNumeric функции

If IsNumeric(Application.Worksheets("EachStepVar").Range("E" & Z).Value) Then 
    PS = PS + Application.Worksheets("EachStepVar").Range("E" & Z).Value 
    End If 

Вы также можете попробовать функцию CInt(), если Excel как-то интерпретировать ряд как текст.