Excel vba对象variables或带块variables未设置错误

我在Excel VBA中编码,并得到错误91或一个对象variables或块variables未设置错误,当我运行我的代码,我不确定为什么。 我定义和设置我的variables,所以我不知道可能会导致错误。 相关代码如下

Sub Button5_Click() Dim i As Integer Dim Month As Range Dim Avg As Range Dim Target As Range Dim Incorrect As Range Set Month = Range("J19") Set Avg = Range("H19") Set Incorrect = Range("A19") Set Target = Range("M19") 'Range("A" & Rows.Count).End(xlUp).Row For i = 0 To 1000 If IsEmpty(Avg) Then If Month.Find("jan") <> "" Then Set Target = Range("M19") 

错误是在If Month.Find(“jan”)<>“”那么代码的一部分。

完整的代码在这里:

 Sub Button5_Click() Dim i As Integer Dim Month As Range Dim Avg As Range Dim Target As Range Dim Incorrect As Range Set Month = Range("J19") Set Avg = Range("H19") Set Incorrect = Range("A19") Set Target = Range("M19") 'Range("A" & Rows.Count).End(xlUp).Row For i = 0 To 1000 If IsEmpty(Avg) Then If Month.Find("jan") <> "" Then Set Target = Range("M19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("feb") <> "" Then Set Target = Range("O19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("mar") <> "" Then Set Target = Range("Q19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("apr") <> "" Then Set Target = Range("S19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("may") <> "" Then Set Target = Range("U19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("jun") <> "" Then Set Target = Range("W19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("jul") <> "" Then Set Target = Range("Y19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("aug") <> "" Then Set Target = Range("AA19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("sep") <> "" Then Set Target = Range("AC19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("oct") <> "" Then Set Target = Range("AE19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("nov") <> "" Then Set Target = Range("AG19") If IsEmpty(Target) Then Incorrect.Value = "X" End If Else Set Target = Range("AI19") If IsEmpty(Target) Then Incorrect.Value = "X" End If End If Else If Month.Find("jan") <> "" Then Set Target = Range("N19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("feb") <> "" Then Set Target = Range("P19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("mar") <> "" Then Set Target = Range("R19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("apr") <> "" Then Set Target = Range("T19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("may") <> "" Then Set Target = Range("V19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("jun") <> "" Then Set Target = Range("X19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("jul") <> "" Then Set Target = Range("Z19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("aug") <> "" Then Set Target = Range("AB19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("sep") <> "" Then Set Target = Range("AD19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("oct") <> "" Then Set Target = Range("AF19") If IsEmpty(Target) Then Incorrect.Value = "X" End If ElseIf Month.Find("nov") <> "" Then Set Target = Range("AH19") If IsEmpty(Target) Then Incorrect.Value = "X" End If Else Set Target = Range("AJ19") If IsEmpty(Target) Then Incorrect.Value = "X" End If End If End If Set Month = Month.Offset(1, 0) Set Incorrect = Incorrect.Offset(1, 0) Set Avg = Avg.Offset(1, 0) Set Target = Target.Offset(1, 0) Next i End Sub 

任何帮助是极大的赞赏。

Range.Find返回一个Range所以你需要评估它作为一个对象:

 If Not Month.Find("jan") Is Nothing Then Set Target = Range("M19") End If 

如果你需要使用返回的Range你可以使用这样的东西:

 Dim foundCell As Range Set foundCell = Month.Find("jan") If Not foundCell Is Nothing Then Set Target = Range("M19") End If 

Range.Find的参考在这里 。