遍历一列直到最后一个非空行以通过用户表单查找匹配数据 VBA
Loop through a column till last non empty row to find matching data through a userform VBA
我卡在这个小问题上了。这是我的 Excel 数据的样子:
我有一个用户窗体,它要求输入“Hue”、“Munsell Value”和“Munsell Chroma”值,它应该在 D 列(颜色名称)中给出值作为消息框的输出。我试图循环直到最后一个非空行并检查 A、B、C 列是否匹配数据,然后给出相应的第 4 列作为输出。
这是我的 VBA 代码:
Sub Result()
Dim r As Range
Dim LastRow As Long
SheetName = frmForm.cmbSheet
Hue = frmForm.txtHue
Value2 = frmForm.txtValue
Chroma = frmForm.txtChroma
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(SheetName)
LastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row
For Each r In ws.Range("A2:A" & LastRow)
If r = Hue & r.Offset(0, 1) = Value2 & r.Offset(0, 2) = Chroma Then
MsgBox r.Offset(0, 3).Value
Exit Sub
End If
Next r
MsgBox ("No color found for these Munsell color values!")
End Sub
这是基本的用户窗体:
每次我 运行 代码时,我都会收到消息“找不到颜色...”。即使我在用户窗体中放置了完全匹配的值。
改变
If r = Hue & r.Offset(0, 1) = Value2 & r.Offset(0, 2) = Chroma Then
和
If r = Hue and r.Offset(0, 1) = Value2 and r.Offset(0, 2) = Chroma Then
我卡在这个小问题上了。这是我的 Excel 数据的样子:
我有一个用户窗体,它要求输入“Hue”、“Munsell Value”和“Munsell Chroma”值,它应该在 D 列(颜色名称)中给出值作为消息框的输出。我试图循环直到最后一个非空行并检查 A、B、C 列是否匹配数据,然后给出相应的第 4 列作为输出。
这是我的 VBA 代码:
Sub Result()
Dim r As Range
Dim LastRow As Long
SheetName = frmForm.cmbSheet
Hue = frmForm.txtHue
Value2 = frmForm.txtValue
Chroma = frmForm.txtChroma
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(SheetName)
LastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row
For Each r In ws.Range("A2:A" & LastRow)
If r = Hue & r.Offset(0, 1) = Value2 & r.Offset(0, 2) = Chroma Then
MsgBox r.Offset(0, 3).Value
Exit Sub
End If
Next r
MsgBox ("No color found for these Munsell color values!")
End Sub
这是基本的用户窗体:
每次我 运行 代码时,我都会收到消息“找不到颜色...”。即使我在用户窗体中放置了完全匹配的值。
改变
If r = Hue & r.Offset(0, 1) = Value2 & r.Offset(0, 2) = Chroma Then
和
If r = Hue and r.Offset(0, 1) = Value2 and r.Offset(0, 2) = Chroma Then