Mysterious Variable (SRng)
Я бы написал код примерно так ( не решение просто более читаемая версия):
Sub Shortname()
Dim SRng As Variant
Dim SName As Integer
Dim SNrow As Integer
Dim PLcol As Integer
Dim PLrow As Integer
'Missing Declaration
Dim i As Long
'To avoid jumping around worksheets do NOT use Activate or Select
With Worksheets(3)
SNrow = .Cells(Rows.Count, 1).End(xlUp).Row
SRng = .Range(Cells(2, 1), Cells(SNrow, 1)).Value
End With
With Worksheets(2)
PLcol = .Cells(1, Columns.Count).End(xlToLeft).Column + 1
PLrow = .Cells(Rows.Count, 1).End(xlUp).Row
End With
With Application.WorksheetFunction
For i = 2 To PLrow
'Run-time error 424: Object required
Worksheets(2).Cells(i, PLcol).Value = .Index(SRng, .Match("TRUE", _
.IsNumber(.Search(SRng.Value, Cells(i, 6))), 0), 1)
Next i
End With
End Sub
Ошибка(загадка) лежит в переменной SRng.Почему это объявлено как вариант?Если это String, объявите его как String и измените строку SRng = .Range(Cells(2, 1), Cells(SNrow, 1)).Value
на
SRng = .Range(Cells(2, 1), Cells(SNrow, 1)).Address
Если это объект Range, объявите его как Range и удалите .Value
, но тогда вы все равно получите ошибкув цикле For Next , поскольку вы используете SRng.Value
в части Search оператора, но диапазон не имеет значения (возможно, вы хотели использовать что-то подобное SRng.Cells(i, 6).Value
).
Если это не поможет вам предоставить дополнительную информацию, например образец листа (ов), чтобы увидеть, что находится в ячейках, диапазонах ... и объяснить, что именно вы ищете, вДля следующего цикла.