我是一个新的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的值。感谢您的任何澄清或帮助!
答案 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
进入您的代码,看看是否有效。这是我可以提供的最好的建议,没有任何数据或完整的模块进行测试,但无论如何都给它一个镜头。