我是VBA编码和处理匹配代码的新手。当我在"数据表"中运行代码时,代码工作正常。 (表单是我的所有数据都是,并且必须找到匹配项),但是当我在首页上运行代码时(表1中包含用户表单),代码是debuggen并说"运行时错误13& #34 ;.任何人都能说出问题所在吗?
任何人都可以告诉我为什么我的" If isError"不起作用吗?
提前致谢!
溴
'Find SKU and Test number
Dim icol As Integer
Sheet13.Range("XFD2") = UserForm2.ComboBox1.Value 'Sættes = ComboBox1.value
Sheet13.Range("XFD3") = UserForm2.ComboBox2.Value 'Sættes = ComboBox2.value
icol = [Sheet13.MATCH(XFD2&XFD3,A:A&Q:Q,0)] 'Match af værdien for vores SKU og test nr
With ThisWorkbook.Worksheets("Data sheet")
'If SKU or Test number not found, then messagebox
If IsError("A:A") Then MsgBox "SKU not found": Exit Sub
If IsError("Q:Q") Then MsgBox "Test number not found": Exit Sub
'Add test result/next step and comment
.Cells(icol, 30).Value = Me.ComboBox3.Value
.Cells(icol, 30 + 1).Value = Me.Comments_To_Result.Value
End With
End If
Set objFSO = Nothing
Set openDialog = Nothing
Range("XFD2").Clear
Range("XFD3").Clear
答案 0 :(得分:0)
icol
应该是这样的:
icol = Application.match(arg1, arg2, arg3)
请参阅MSDN中的示例:
var = Application.Match(Cells(iRow, 1).Value, Worksheets(iSheet).Columns(1), 0)
关于If IsError("A:A") Then MsgBox "SKU not found": Exit Sub
,你做错了。我假设,你想循环遍历第一列中的所有单元格,并获得其中一个是否是错误。你需要一个循环。这是一个非常简单的,但您应该在代码中以某种方式实现它:
Option Explicit
Public Sub TestMe()
Dim rng As Range
For Each rng In Range("A:A")
If IsError(rng) Then Debug.Print rng.Address
Next rng
End Sub