excel - 运行时错误 1004 消息 - 无法获取 WorksheetFunction 类的 VLookup 属性
问题描述
我希望有人可以帮助
运行时错误 1004 消息 - 无法获取 WorksheetFunction 类的 VLookup 属性。
我遇到了两个与此错误代码有关的问题。
我有一个文件,其中包含一个用户表单,我可以通过它轻松添加和修改记录。自从我最近升级到 Surface Pro 7 后,我被迫通过我的 MS 帐户使用 MS 365。像许多其他人一样,我的许多文件都受到 Excel 365-64 位中缺少的工具和功能的影响。通过选择安装 32 位版本,我已经能够恢复这些工具和功能,但是我仍然有一些问题。
问题 1 - 当我尝试在用户表单的查找文本框中输入数值时,会发生此错误。虽然这在以前版本的 Excel 中不是问题,但在 MS 365 中是这样。为了避免这种情况,我需要将所有查找值转换为文本格式。不是很好,但它有效。
现在解决了这个问题,又出现了一个问题,它返回相同的运行时错误和消息。
问题 2 - 我的用户表单使用框架来分隔不同的信息组,并且我已将选项卡设置为以正确的顺序移动。因此,我初始化了用户表单并完成了所需的详细信息,并且查找单元格完美运行。我使用命令按钮将记录添加到工作表并清除和设置用户表单,就像刚刚打开一样。
我开始在“已清除”表单中输入新的详细信息,直到我跳到包含查找文本框的第三帧之前都没有问题。在我输入任何信息之前,我得到了相同的运行时错误。
有 5 个这样的查找文本框,但是当我检查代码中的调试时,突出显示的是最后一个文本框的代码。我还没有隔离这个文本框以查看错误是否仍然出现,调试突出显示下一个最后的代码。
表单和代码应该对输入的第一条记录有效,但对随后的记录无效,这似乎是不合逻辑的,尤其是在两者使用相同的初始化代码时。
下面是查找代码(其中包括检查以确保匹配记录出现在查找表中)和“添加记录”命令代码的最后几行,一旦将详细信息添加到工作表中就会清除表单。
任何帮助将不胜感激
查找代码
Private Sub txtDepotCode_AfterUpdate()
'Looks up the Depot Location and Operator information and applies this to the databasse and the user form
If WorksheetFunction.CountIf(Sheet2.Range("J2:L250"), Me.txtDepotCode.Value) = 0 Then
MsgBox "This is an invalid code", 0, " Validation Check"
Me.txtDepotCode.SetFocus
Me.txtDepotCode.Value = ""
Exit Sub
End If
With Me
.txtDepotLocation = Application.WorksheetFunction.VLookup(Me.txtDepotCode, Sheet2.Range("J2:L250"), 2, False)
.txtDepotOperator = Application.WorksheetFunction.VLookup(Me.txtDepotCode, Sheet2.Range("J2:L250"), 3, False)
End With
End Sub
添加记录代码(最终操作)
Call UserForm_Initialize
cboType.SetFocus
也用于初始化用户表单和清除用户表单的命令。
解决方案
查找使用Application.Match
Private Sub txtDepotCode_AfterUpdate()
Dim rg As Range: Set rg = Sheet2.Range("J2:L250")
Dim cString As String: cString = Me.txtDepotCode.Value
Dim cIndex As Variant: cIndex = Application.Match(cString, rg.Columns(1), 0)
If IsNumeric(cIndex) Then
Me.txtDepotLocation = rg.Cells(cIndex, 2).Value
Me.txtDepotOperator = rg.Cells(cIndex, 3).Value
Else
MsgBox "This is an invalid code", 0, " Validation Check"
Me.txtDepotCode.SetFocus
Me.txtDepotCode.Value = ""
End If
End Sub
推荐阅读
- c++ - 如何在 C++ 中解析 libcurl 响应?
- regex - 这个正则表达式查找特定字母有什么问题?
- python-3.x - 如何在域过滤器 odoo 中获得超过 7 个字段
- r - 如何在三重维恩图中添加逗号分隔符?
- java - ResourceLeakDetector.setLevel(PARANOID) 不产生资源泄漏日志
- angular - 从 Angular 和 Ng 引导程序中的模式路由到另一个页面/组件
- javascript - 如何使用比较器对 ag 网格中的数字进行排序
- mysql - SQL Server 中的 SUBSTRING_INDEX 等效项
- windows-authentication - 从 Azure Web 作业使用 Windows 身份验证连接到 SQL Server
- python - 试图理解 Python 中的蒙蒂霍尔模拟代码