Я совершенно новичок в VBA, поэтому, пожалуйста, потерпите меня.
Я пытаюсь написать подпроцедуру, которая будет перебирать каждую строку в определенном столбце и сравнивать с критериями другого листа. например, если он содержит «x», будет возвращено значение. Однако, когда я пытаюсь запустить код, коды работают вечно и приводят к зависанию компьютера.
Вот код, который я написал до сих пор. Он продолжает выдавать ошибку: переменная объекта и переменная блока не установлены. PS: я получил ошибки при использовании «Application.WorksheetFunction.Index» и при чтении других потоков, было предложено удалить «WorksheetFunction». Я не уверен, является ли это причиной проблемы, и я также хотел бы уточнить обоснование удаления слов «WorksheetFunction»
Заранее большое спасибо!
Sub sub_inputData()
Dim ws As Worksheet: Set ws = ActiveSheet
Dim lastrow as range
lastrow = ws.Cells (ws.Rows.Count, 17).End (xlUp).row
Dim rng As Range
Set rng = ws.Range("Q4:Q" & lastrow)
Dim rngCell As Range
On Error Resume Next
For Each rngCell In rng
If rngCell.Offset(0, -13) = "x" Then
rngCell = Application.Index(Sheets("Data").Range _
("D805:D813"), Application.Match(rngCell.Offset(0, -15), Sheets("Data").Range _
("D805:D813"), 1))
ElseIf rngCell.Offset(0, -13) = "y" Then
rngCell = Application.Index(Sheets("Data").Range _
("D27:D34"), Application.Match(rngCell.Offset(0, -15), Sheets("Data").Range _
("D27:D34"), 1))
ElseIf rngCell.Offset(0, -13) = "z" Then
rngCell = Application.Index(Sheets("Data").Range _
("D718:D726"), Application.Match(rngCell.Offset(0, -15), Sheets("Data").Range _
("D718:D726"), 1))
Else: rngCell = vbNullString
End If
Next rngCell
Call sub_code2
Call sub_code3
Set rngCell = Nothing
Set rng = Nothing
End Sub