Excel宏中的Vlookup

时间:2014-01-09 03:15:34

标签: excel excel-vba vlookup vba

我在excel中创建了一个表单,它从用户那里获取输入并在Sheet2中保存相同的表单。我有一个名为Account的组合框,用户将从中选择帐户名称。但是,每个帐户都有一个与之关联的唯一ID。我不希望将此ID公开给最终用户,但同时我希望对应于在sheet2中填充的帐户对应的Id。

我正在尝试使用Vlookup来搜索所选帐户的ID。

我在Sheet3中设置了帐户值。

Example: 
Column A  ColumnB
Account1  Id12345
Account2  Id23456
Account3  Id34567

我在excel宏中的代码如下所示。

Private Sub Save_Click()

Dim RowCount As Long
Dim myValue as String

RowCount = Worksheets("Sheet2").Range("A1").CurrentRegion.Rows.Count
With Worksheets("Sheet2").Range("A1")
 .Offset(RowCount, 0).Value = Me.Account.Value
myValue = WorksheetFunction.VLookup(Range("A2"), Range("Sheet3!G1:G14"), 2, False)

我不确定为什么它不起作用。任何建议将不胜感激。

谢谢,

3 个答案:

答案 0 :(得分:0)

试试这个:

Private Sub Save_Click()

    Dim RowCount As Long
    Dim myValue As Variant
    Dim Sh2 As Worksheet, Sh2 As Worksheet
    Dim RefRange As Range

    With ThisWorkbook
        Set Sh2 = .Sheets("Sheet2")
        Set Sh3 = .Sheets("Sheet3")
    End With

    RowCount = Sh2.Range("A1").CurrentRegion.Rows.Count
    Set RefRange = Sh3.Range("G1:H14") '--Change as necessary.

    Sh2.Range("A1").Offset(RowCount, 0).Value = Me.Account.Value
    On Error GoTo myValueErrHandle
    myValue = WorksheetFunction.VLookup(Sh2.Range("A2").Value, RefRange, 2, False)
    '--More code, etc etc.

myValueErrHandle:
    If Err.Number = 1004 Then
        MsgBox "No match using VLOOKUP."
    End If
    Exit Sub

End Sub

尽可能地限定所有可能的内容,并使用简洁但有意义的代码。如果你想要它里面有什么,请不要使用Range("A2")。使用.Value,因为这是最佳做法。据我所知,没有错。我还为没有匹配添加了Error 1004处理。最后,请注意我已将myValue更改为Variant,只是为了覆盖基础。

如果有效,请告诉我们。

答案 1 :(得分:0)

试试这个? :抱歉太久不能发表评论:

With Worksheets("Sheet2")
    .Range("A1").Offset(RowCount, 0).Value = Me.Account.Value
    myValue = WorksheetFunction.VLookup(.Range("A2"), Sheeet3.Range("G1:H14"), 2, False)" 
End With

也许吧,试试吧。

答案 2 :(得分:0)

Sub Lookup()
Dim Emp As String
Dim Lookup_Range As Range
Dim Age As Single
Emp = "Jitu"
Set Lookup_Range = Range("A1:B8")
Age = Application.WorksheetFunction.VLookup(Emp, Lookup_Range, 2, False)

MsgBox "Age is : $ " & Age
End Sub

表: Emp Age bibhash 22 拉胡尔22 abhisek 23 吉图21 sujit 24 tinku 25 rudra 26