![我收到了应用程序定义或对象定义的错误?](https://linux22.com/image/1438470/%E6%88%91%E6%94%B6%E5%88%B0%E4%BA%86%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%AE%9A%E4%B9%89%E6%88%96%E5%AF%B9%E8%B1%A1%E5%AE%9A%E4%B9%89%E7%9A%84%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我的 if 语句不断出现错误,我不太确定我做错了什么,如能提供任何帮助我将非常感激。
lr = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lr
DynamicLR = Sheets("RA Inventory").Cells(Rows.Count, 1).End(xlUp).Row
'If Application.WorksheetFunction.IsNumeric(Application.WorksheetFunction.Match(ActiveSheet.Range("D" & i), Sheets("RA Inventory").Range("D2:D" & DynamicLR), 0)) = False Then
If Application.WorksheetFunction.IfError(Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Match(ActiveSheet.Range("D" & i), Sheets("RA Inventory").Range("D:D").Select, 0)), False) = False Then
ActiveSheet.Range("A" & i).Select
Selection.Copy
Worksheets("RA Inventory").Activate
ActiveSheet.Range("A" & DynamicLR).Select
ActiveSheet.Paste
谢谢
答案1
如果您正在谈论未注释的内容if
-您不需要选择并且可以使用语法糖:
If [iferror(isnumber(match(A1,B:B,0)),false)] = True Then
MsgBox ("True")
Else: MsgBox ("False")
end if
就像使用函数一样对待范围,例如Sheet1!B:B
您还可以省略worksheetfunction
允许错误的部分(如果您的公式返回错误)
With Application
if .iferror(.isnumber(.match( ...
end with
本质上,您的“匹配”没有正确引用数据。错误 2015 - 请参阅本文档
更大的问题可能是如何你要这样做。你应该使用错误处理来处理错误。这样会更好 -
Sub test()
lr = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lr
x = Application.Match(ActiveSheet.Range("B" & i), Sheets("Sheet1").Range("B1:B" & lr), 0)
If IsNumeric(x) Then
MsgBox (x)
End If
Next
End Sub