Vba 无法获取工作表函数类的VLookup属性错误1004

Vba 无法获取工作表函数类的VLookup属性错误1004,vba,excel,ms-access,vlookup,Vba,Excel,Ms Access,Vlookup,我试图向Access发送一个查询,以填写工作表中的某个值。我将通过获取当前用户的登录名并查看列来获取此工作表。此列将根据access中的列进行更新。我需要的值在我搜索的列右侧的列中。我有下面的代码作为一个临时尝试,让我的VLookup工作 Private Sub CommandButton1_Click() Dim user, cUser As String user = (Environ$("Username")) cUser = Application.Workshe

我试图向Access发送一个查询,以填写工作表中的某个值。我将通过获取当前用户的登录名并查看列来获取此工作表。此列将根据access中的列进行更新。我需要的值在我搜索的列右侧的列中。我有下面的代码作为一个临时尝试,让我的VLookup工作

Private Sub CommandButton1_Click()
    Dim user, cUser As String
    user = (Environ$("Username"))
    cUser = Application.WorksheetFunction.VLookup(user, Worksheets("Sheet1").Range("C2:C1000"), -2, False)
    Worksheets("Sheet1").Range("F1").Value = cUser
    End Sub
我正在尝试获取单元格F1中所需的值。如果这样做有效,我会将该值放入一个变量中,并将其添加到查询中。我还将插入错误处理以确保代码继续工作,但现在我只希望它在我知道列中的1值上工作

试试这个:

Private Sub CommandButton1_Click()
    Dim user As String, cUser As String '// Note you have to declare the type each time!
    user = Environ$("USERNAME")
    cUser = Sheets("Sheet1").Range("C:C").Find(user).Offset(, -2).Value
    Sheets("Sheet1").Range("F1").Value = cUser
End Sub
可再次简化为:

Private Sub CommandButton1_Click()
    Sheets("Sheet1").Range("F1").Value = Sheets("Sheet1").Range("C:C").Find(Environ$("USERNAME")).Offset(, -2).Value
End Sub

vlookup根本不适合您尝试执行的操作。

您不能在查找区域之外或索引列之前引用列。您需要在此处使用INDEX/MATCH或
Find()
查找所需内容。非常感谢!我发现一个导游在做几乎相同的事情,所以我想我可以照这个做。你的答案有效!没问题-您最初出现问题的原因是因为您试图引用一个没有被视为vlookup一部分的列-而不是痛苦地解释为什么需要使用INDEX/MATCH并将其转换为VBA版本,我认为使用
.Find()
会更容易。我仍然建议大家看看索引/匹配是如何工作的,以备将来参考。