Excel 将变量从一个工作簿传递给另一个工作簿中的Find方法

Excel 将变量从一个工作簿传递给另一个工作簿中的Find方法,excel,vba,Excel,Vba,我已经在你们的论坛和其他许多论坛上搜索了我的问题的答案。每当我接近我需要的时候;但每次我都无法满足我的需求。 我正在使用两本打开的工作簿;一个具有电话号码列表和与传入呼叫相关的数据;另一个与电话号码和电话号码的用户名相关。 在第一个工作簿中,我按电话号码将列表分成了几个组,组之间有一个空行。然后,我通过列表并捕获在第二工作簿中的“查找”中使用的电话号码,这样我就可以匹配电话号码并捕获用户名以返回到第一个工作簿并粘贴到关联组下面的空白行中。 我的问题是,无论我如何修改我的查找,我都无法让它正确执行

我已经在你们的论坛和其他许多论坛上搜索了我的问题的答案。每当我接近我需要的时候;但每次我都无法满足我的需求。 我正在使用两本打开的工作簿;一个具有电话号码列表和与传入呼叫相关的数据;另一个与电话号码和电话号码的用户名相关。 在第一个工作簿中,我按电话号码将列表分成了几个组,组之间有一个空行。然后,我通过列表并捕获在第二工作簿中的“查找”中使用的电话号码,这样我就可以匹配电话号码并捕获用户名以返回到第一个工作簿并粘贴到关联组下面的空白行中。 我的问题是,无论我如何修改我的查找,我都无法让它正确执行并在第二个工作簿中选择电话号码。我终于成功地让它在没有错误的情况下进行处理,但现在它不会进行搜索。这是我的VB代码;如果你能帮我,我会非常感激

如果我可以让第一次搜索开始工作,我计划将其修改为一个循环,在第一个工作簿中继续,直到工作表结束。
子测试\u查找\u匹配\u数据()
'
'测试\查找\匹配\数据宏
'
将电话号码变暗为字符串_
称为_号,只要_
查找_测试作为范围
范围(“A1”)。选择
Cells.Find(What:=“被叫号码”_
LookIn:=xlValues_
看:=xlother_
搜索顺序:=xlByRows_
SearchDirection:=xlNext_
MatchCase:=假_
SearchFormat:=False)。激活
选择。结束(xlDown)。选择
电话号码=ActiveCell.Value
选择,复制
ActiveWindow.ActivateNext
范围(“A1”)。选择
如果Find_测试什么都不是,那么
ActiveCell.Offset(行偏移量:=1_
ColumnOffset:=0。是否激活
如果ActiveCell.Value电话号码,则
设置Find\u Test=Cells.Find(What:=电话号码_
LookIn:=xlValues_
看:=xlother_
搜索顺序:=xlByRows_
SearchDirection:=xlNext_
MatchCase:=假_
SearchFormat:=False)
选择,复制
范围(“A1”)。选择
ActiveWindow.ActivateNext
如果结束
如果结束
端接头

尝试将
电话号码=ActiveCell.Value
替换为
电话号码=ActiveCell.Text

每个工作簿中的电话号码是如何存储的-格式文本还是真号码?电话号码存储为真号码,格式为电话号码。请尝试将电话号码声明为Long当我将电话号码声明为Long时,我在“phone\u number=ActiveCell.Value”-“运行时错误'6'”行中出现错误:溢出“哦-您可能需要一个双精度。我按照您的建议将条目“ActiveCell.Value”更改为“ActiveCell.Text”,我仍然存在的问题是,当我在第二个工作簿上时,“Find”语句不会从当前单元格中移动来定位我试图输入的值作为条件。
Sub Test_Find_Match_Data()
'
' Test_Find_Match_Data Macro
'
Dim Phone_Number As String, _
        Called_Number As Long, _
        Find_Test As Range

    Range("A1").Select

    Cells.Find(What:="called number", _
        LookIn:=xlValues, _
        LookAt:=xlWhole, _
        SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, _
        MatchCase:=False, _
        SearchFormat:=False).Activate
    Selection.End(xlDown).Select

    Phone_Number = ActiveCell.Value

    Selection.Copy

    ActiveWindow.ActivateNext

    Range("A1").Select

        If Find_Test Is Nothing Then

        ActiveCell.Offset(RowOffset:=1, _
               ColumnOffset:=0).Activate

            If ActiveCell.Value <> Phone_Number Then

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

                    Selection.Copy

                    Range("A1").Select

            ActiveWindow.ActivateNext

            End If

        End If

End Sub