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

时间:2018-03-28 01:40:01

标签: excel vba vlookup userform

我是一个新的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的值。感谢您的任何澄清或帮助!

1 个答案:

答案 0 :(得分:1)

当你说错误代码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

进入您的代码,看看是否有效。这是我可以提供的最好的建议,没有任何数据或完整的模块进行测试,但无论如何都给它一个镜头。