VLOOKUP 不返回结果



好吧,我创建了一个包含两个字段的用户表单。 一个是组合框,用作文本值的下拉列表,例如"客厅"厨房"浴室"...... 第二个是文本框。 在此文本框中,我想显示房间名称的房间代码

我创建了表单

  • 组合框称为房间名称
  • 文本框称为"房间类型">

我有一个"图书馆"工作表

  • 列 1 = 房间类型(从 1 到 n 的整数值(
  • 第 3 列 = 房间名称(文本(

我有一本"房簿">

在这里我想添加房间类型和房间名称

当我使用 for 循环并与 if 语句进行比较时,代码按预期工作,结果是我的每个房间名称的 RoomType 代码。 输出到"ROOMBOOK"也按预期工作。

当我使用 VLOOKUP 时,我只收到类型不匹配错误。 这里的代码

Private Sub InsertButton_Click()
'find last filled row
lastrow = ThisWorkbook.Worksheets("ROOMBOOK").Cells(Rows.Count, 2).End(xlUp).Row
' get text
ThisWorkbook.Worksheets("ROOMBOOK").Cells(lastrow + 1, 2).Value = RoomNames.Text
Me.RoomTypes = Application.WorksheetFunction.VLookup(RoomNames.Text, Worksheets("LIBRARY").Range("A5:C50"), 1, 0)
ThisWorkbook.Worksheets("ROOMBOOK").Cells(lastrow + 1, 1).Value = RoomTypes.Text
End Sub

导致 VLookup 语句的运行时错误 1004

任何帮助表示赞赏

根据您的措辞,您似乎正在尝试以某种"向后"模式使用 VLOOKUP(在第三列中找到匹配项并在第一列中返回相应的值(,这是不允许

的使用Match()函数获取找到的值的索引,然后将其用作Cells(rowIndex, colIndex)上下文中的 rowIndex 参数:

Me.RoomTypes.Text = ThisWorkbook.Worksheets("LIBRARY").Range("A5:A50").Cells(Application.WorksheetFunction.Match(Me.RoomNames.Text, ThisWorkbook.Worksheets("LIBRARY").Range("C5:C50"), 0), 1)

顺便说一句,你应该养成使用显式Range限定的习惯,直到Workbook对象,其示例如下:

Option Explicit
Private Sub InsertButton_Click()
Dim lastrow As Long
With ThisWorkbook ' reference wanted workbook
Me.RoomTypes.Text = .Worksheets("LIBRARY").Range("A5:A50").Cells(Application.WorksheetFunction.Match(Me.RoomNames.Text, .Worksheets("LIBRARY").Range("C5:C50"), 0), 1)
With .Worksheets("ROOMBOOK") 'reference wanted worksheet of referenced workbook
lastrow = .Cells(.Rows.Count, 2).End(xlUp).Row 'find last not empty cell row index in referenced worksheet column B
.Cells(lastrow + 1, 1).Value = Me.RoomTypes.Text
.Cells(lastrow + 1, 2).Value = RoomNames.Text
End With
End With
End Sub

最新更新