Я постоянно получаю сообщение об ошибке в операторе 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
По сути, ваш 'match' не ссылается на данные правильно. Ошибка 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