Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA运行时错误91_Vba_Excel - Fatal编程技术网

VBA运行时错误91

VBA运行时错误91,vba,excel,Vba,Excel,我试图进行一些计算来验证单元格中的数据,方法是将值与行中的平均值进行比较,然后将验证结果放在另一个表中 当我运行代码时,我得到: 运行时错误“91”:对象变量或未设置块 我不知道我错过了什么。这是我的代码: Private Sub CommandButton17_Click() Dim SelectedCheckCell As Range, LastValue As Range, ValidationValue As Range, LastValidatedCell As Long Dim Av

我试图进行一些计算来验证单元格中的数据,方法是将值与行中的平均值进行比较,然后将验证结果放在另一个表中

当我运行代码时,我得到:

运行时错误“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
Private子命令按钮17_单击()
Dim SelectedCheckCell作为范围,LastValue作为范围,ValidationValue作为范围,LastValidatedCell作为长度
Dim Average为整数,SelectedRow为整数,LastValidation为整数
Dim结果为字符串,result2为字符串,SelectedCol为字符串
设置SelectedCheckCell=Application.InputBox(“选择要验证的初始单元格:”,xTitleId,Selection.Address,类型:=8)
设置LastValue=Application.InputBox(“选择要计算的最后一个单元格:”,xTitleId,Selection.Address,Type:=8)
设置ValidationValue=Application.InputBox(“选择初始单元格以放置验证结果:”,xTitleId,Selection.Address,Type:=8)
SelectedRow=Split(SelectedCheckCell.Address,“$”)(2)
SelectedCol=Split(LastValue.Address,“$”)(1)
LastValidatedCell=单元格(Rows.Count,2).End(xlUp).Row
LastValidation=Split(LastValidatedCell.Address,“$”)(2)
结果=“确定”
结果2=“不正常”
对于i=已选择如何进行上次验证
Average=Application.WorksheetFunction.Average(范围(“C”&i&“:”&SelectedCol&i))
如果((SelectedCheckCell.value<(Average-(Average*0.1))或(SelectedCheckCell.value>(Average+(Average*0.1))),则
ValidationValue.value=结果
其他的
ValidationValue.value=result2
如果结束
SelectedCheckCell=SelectedCheckCell.Offset(1,0)
ValidationValue=ValidationValue.Offset(1,0)
接下来我
端接头
谢谢

改变这个

SelectedCheckCell.Address


不确定您试图对这些变量(LastValue.Address和ValidationValue.Address)执行什么操作,因为它们在调用时不包含和范围对象,而不设置任何对象。

Average不应该是双类型变量吗?根据我的经验,很多数字的平均值很少会变成偶数。投票人应该发表评论来证明他们的行为是正确的。否则,否决被视为盲目行动。
Selection.Address