Excel 运行时错误:无法获取WorksheetFunction类的Vlookup属性

Excel 运行时错误:无法获取WorksheetFunction类的Vlookup属性,excel,vlookup,excel-2013,vba,Excel,Vlookup,Excel 2013,Vba,我试图在vba上创建一个登录用户表单,但它返回标题中所述的错误。这里有一些背景 我有一张名为“用户列表”的表格,上面有用户名和相关密码。范围从B3到C1000。列B包含所有用户名,而列C包含密码。我想创建一个登录用户表单,这样在用户输入用户名和密码后,vba将搜索用户列表并确定详细信息是否正确。一旦确认,vba将引导用户进入另一个名为主页的页面。下面是我的代码 Private Sub MLIB_Click() Dim UserName As String Dim PassWord As Stri

我试图在vba上创建一个登录用户表单,但它返回标题中所述的错误。这里有一些背景

我有一张名为“用户列表”的表格,上面有用户名和相关密码。范围从B3到C1000。列B包含所有用户名,而列C包含密码。我想创建一个登录用户表单,这样在用户输入用户名和密码后,vba将搜索用户列表并确定详细信息是否正确。一旦确认,vba将引导用户进入另一个名为主页的页面。下面是我的代码

Private Sub MLIB_Click()
Dim UserName As String
Dim PassWord As String

' MUN is the name of the textbox associated to the Username
' MPW is the name of the textbox associated to the Password
UserName = MUN.Value
PassWord = MPW.Value

If UserName = Application.WorksheetFunction.VLookup(UserName, Sheets("User_List").Range("B3:C1000"), 1, True) Then
    If PassWord = Application.WorksheetFunction.VLookup(PassWord, Sheets("User_List").Range("B3:C1000"), 2, True) Then
       Sheets("Home_Page").Activate
       Unload Me
    End If
End If
MsgBox "Sorry, Incorrect Login Details"
End Sub

我一直在想这个问题,但这需要很长时间!谢谢你的帮助

您应该使用False作为的可选[range\u lookup]参数,以便对未排序的数据进行精确匹配

首先,用快捷键检查提供的用户名是否存在于B列中。如果存在,请检查C列中的关联密码是否与提供的密码相同

With Worksheets("User_List")
    If Not IsError(Application.Match(UserName, .Columns(2), 0)) Then
        If Password = Application.VLookup(UserName, .Range("B:C"), 2, False) Then
           Worksheets("Home_Page").Activate
           Unload Me
        End If
    End If
End With
MsgBox "Sorry, Incorrect Login Details"

VBA(默认情况下)区分大小写,因此,虽然用户名查找不区分大小写,但密码检查区分大小写。这可能就是您想要的。

它给了我一个错误-运行时错误“438”(对象不支持此属性或方法),并突出显示了下面的代码。如果不是IsError(Application.Match(UserName.Column(2),0)),那么我道歉。应该是
.Columns(2)
,而不是
.Columns(2)