从另一个工作表上的特定单元格中搜索值

时间:2018-04-25 14:49:09

标签: excel vba excel-vba

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

我的代码然后需要使用工作表中的一个值来检查此值是否在另一个工作表上显示,如果是,它会将链接到该值的值复制到原始工作表,然后填充用户窗体以便进一步信息可以被捕获。

如果我激活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

1 个答案:

答案 0 :(得分:1)

您无法同时声明和.Activate变量range

    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

建议,请避免使用.SelectActivate,此处说明How to Avoid the Select Method in VBA & Why

代码:

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