Vba 从另一张图纸上的特定单元格中搜索值

Vba 从另一张图纸上的特定单元格中搜索值,vba,excel,Vba,Excel,我使用userforms输入数据,在某一点上,数据的一部分被复制到工作簿中的一个工作表中 然后,我的代码需要使用工作表中的一个值来检查该值是否出现在另一个工作表中,如果出现,则将链接到该值的值复制到原始工作表中,然后填充userform,以便捕获更多信息 如果我激活on error resume next,则除tab函数停止在userform上工作外,其他所有功能都正常工作,如果我在没有on error resume next的情况下运行它,则会出现运行时错误: “91”对象变量或未设置块变量

我使用userforms输入数据,在某一点上,数据的一部分被复制到工作簿中的一个工作表中

然后,我的代码需要使用工作表中的一个值来检查该值是否出现在另一个工作表中,如果出现,则将链接到该值的值复制到原始工作表中,然后填充userform,以便捕获更多信息

如果我激活on error resume next,则除tab函数停止在userform上工作外,其他所有功能都正常工作,如果我在没有on error resume next的情况下运行它,则会出现运行时错误:

“91”对象变量或未设置块变量

我该如何解决这个问题

Sub Find_7_day()

        Dim vfind

        Dim rng As Range

        Sheets("Test Data").Select
        Sheets("Test Data").Range("$E$3").Select
        vfind = ActiveCell

        'On Error Resume Next
        Call Sheet
        Set rng = Cells.Find(What:=vfind, After:=ActiveCell,        LookIn:=xlValues, _
             LookAt:=xlWhole, SearchOrder:=xlByRows,     SearchDirection:=xlNext, _
             MatchCase:=True, SearchFormat:=False).Activate

       If ActiveCell = vfind Then
            Call Old_7_day
            Call Form_7_day_fill
        Else
            Sheets("Test Data").Select
        End If


End Sub
无法声明和。请同时激活变量范围:

    Dim rng As Range

    Set rng = Cells.Find(What:=vfind, After:=ActiveCell, LookIn:=xlValues, _
         LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
         MatchCase:=True, SearchFormat:=False).Activate
建议,避免使用。选择并激活,此处解释

代码:


找不到您的值,因此您试图激活一个不存在的范围。什么是工作表?删除。激活并测试。如果不是rng,则与@TimWilliams提到的一样,您不能设置范围并同时激活它。删除.Activate..如果您想选择单元格,那么下一行可能是rng。select--@SJR Sheet是另一段代码,它会将您带到要进行搜索的工作表,大约有15个工作表需要检查,因此其中一个输入用于定位工作表,另一个用于此工作表code@SJR非常感谢。更新了我的答案,以检查rng是否为空。抱歉,是我无意中做的。我现在把它颠倒过来了。似乎如果你先投反对票,然后再投反对票,它会从-1变为+1!
Sub Find_7_day()

        Dim vfind As String
        Dim rng As Range

        vfind = Sheets("Test Data").Range("$E$3").Value

        Call Sheet

        Set rng = Cells.Find(What:=vfind, LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, _
        MatchCase:=True, _
        SearchFormat:=False)

        If rng Is Nothing Then
        MsgBox vfind & " " & "dont exist"
        Exit Sub
        End If

       If rng.Value = vfind Then
            Call Old_7_day
            Call Form_7_day_fill
        Else
            Sheets("Test Data").Select
        End If

        Exit Sub

End Sub