2016-02-23 2 views
-1

Я пытаюсь сделать некоторые вычисления для проверки данных в ячейке, сравнив значение со средним значением из его строки и поместив результат проверки в другую таблицу.Ошибка VBA Runtime 91

Когда я запускаю мой код, я получил:

Run Time Error '91': Переменная объекта или блока не указан

Я не знаю, что я пропускаю. Итак, вот мой код:

Private Sub CommandButton17_Click() 
Dim SelectedCheckCell As Range, LastValue As Range, ValidationValue As Range, LastValidatedCell As Long 
Dim Average As Integer, SelectedRow As Integer, LastValidation As Integer 
Dim result As String, result2 As String, SelectedCol As String 

Set SelectedCheckCell = Application.InputBox("Select initial cell to validate:", xTitleId, Selection.Address, Type:=8) 
Set LastValue = Application.InputBox("Select last cell to calculate:", xTitleId, Selection.Address, Type:=8) 
Set ValidationValue = Application.InputBox("Select initial cell to place result of validate:", xTitleId, Selection.Address, Type:=8) 

SelectedRow = Split(SelectedCheckCell.Address, "$")(2) 
SelectedCol = Split(LastValue.Address, "$")(1) 

LastValidatedCell = Cells(Rows.Count, 2).End(xlUp).Row 
LastValidation = Split(LastValidatedCell.Address, "$")(2) 

result = "OK" 
result2 = "NOT OK" 

For i = SelectedRow To LastValidation 

    Average = Application.WorksheetFunction.Average(Range("C" & i & ":" & SelectedCol & i)) 

    If ((SelectedCheckCell.value < (Average - (Average * 0.1))) Or (SelectedCheckCell.value > (Average + (Average * 0.1)))) Then 
     ValidationValue.value = result 
    Else 
     ValidationValue.value = result2 

End If 

SelectedCheckCell = SelectedCheckCell.Offset(1, 0) 
ValidationValue = ValidationValue.Offset(1, 0) 

Next i 

End Sub 

Спасибо!

+0

Не должно ** Среднее ** быть двойным типом var? По моему опыту, в среднем по многим числам очень редко разрешается четное целое число. – Jeeped

ответ

-1

Изменить этот

SelectedCheckCell.Address 

Для

Selection.Address 

Не уверен, что вы пытаетесь сделать с этим переменным (LastValue.Address & ValidationValue.Address), поскольку они не состоят и объекты диапазон когда он вызывается без установки на него какого-либо объекта.

+0

Down Voter должен оставить комментарий, чтобы оправдать свое действие. В противном случае downvoting считается слепым действием. – Sixthsense