Excel 使用其他工作簿中的VLookup填充文本框

Excel 使用其他工作簿中的VLookup填充文本框,excel,vba,vlookup,userform,Excel,Vba,Vlookup,Userform,我是一个新的VBA用户,在执行第一个真正的UserForm任务时遇到了一些障碍。我试图用VBA中VLookup的信息填充两个单独的UserForm文本框。关键是按路径/文件名选择两个工作簿,并基于打开的工作簿中的ActiveCell运行VLookup。最终目标是让用户选择首选值,选择它,新值将存储在打开的工作簿中。现在我有一个运行宏的ClickButton(请放心),代码如下: Private Sub CommandButton1_Click() Dim PR As String Dim Ev

我是一个新的VBA用户,在执行第一个真正的UserForm任务时遇到了一些障碍。我试图用VBA中VLookup的信息填充两个单独的UserForm文本框。关键是按路径/文件名选择两个工作簿,并基于打开的工作簿中的ActiveCell运行VLookup。最终目标是让用户选择首选值,选择它,新值将存储在打开的工作簿中。现在我有一个运行宏的ClickButton(请放心),代码如下:

Private Sub CommandButton1_Click()

Dim PR As String
Dim Eval2 As String
Dim book1 As Workbook
Dim extwbk As Workbook
Dim x As Range


Set book1 = ThisWorkbook
Set extwbk = Workbooks.Open("C:\Documents\ReviewBook.xlsx")
Set x = extwbk.Worksheets("Sheet2").Range("A1:A100")


PR = Cells(ActiveCell.Row, 1).Value
Eval2 = Application.WorksheetFunction.VLookup(PR, x, 5, False)
extwbk.Close savechanges:=False

Textbox.Text = PR
FilePath1.Text = FP1
FP2 = FilePath2.Text

TextBox2.Text = Eval2

End Sub

我已经从我的VBA中清除了这些内容,如果有任何东西不起作用或不清楚,请告诉我。我一直得到错误代码“1004”。就像我说的,我只是想让“TextBox2.Text”成为VLookup的值。感谢您的任何澄清或帮助

当您说错误代码1004时,我将假设它告诉您类似“无法获取VLookup属性”之类的信息。如果是这样,那么这意味着您的VLookup正在返回一个错误,这将导致您的代码停止执行。要解决此问题,请尝试合并:

Private Sub CommandButton1_Click()    
    On Error GoTo ErrHandler

    '...your code...

    Exit Sub

ErrHandler:
    If Err.Number <> 0 Then
       TextBox2.Text = Eval2
    Else
       Msgbox "VLookup did not return a value"
    End If
Private子命令按钮1\u单击()
关于错误转到错误处理程序
“…你的代码。。。
出口接头
错误处理程序:
如果错误号为0,则
TextBox2.Text=Eval2
其他的
Msgbox“VLookup未返回值”
如果结束

输入您的代码,看看这是否有效。这是我在没有任何数据或完整模块的情况下给出的最好的建议,可以进行测试,但也可以尝试一下。

或者,使用
Application.VLookup
并将
Eval2
声明为
变体
;如果VLookup失败,
Eval2
将包含一个错误值,您可以使用
if-IsError(Eval2)验证该值,然后在将其用作
字符串之前验证该值。您是正确的,这确实允许代码正常运行。然而,我似乎永远都无法让这辆车开动。我甚至尝试过在同一份电子表格的副本中搜索,这应该可以保证匹配,但没有运气。你还有什么建议吗?如果没有看到一些示例数据/代码,我真的没有什么建议。您是否能够编辑您的问题,以提供您的错误的最小工作样本?