Я думаю, что существует некоторая путаница в природе вашего ListObject, как указано в вашем исходном коде (см. Комментарии к вопросу). Когда вы выбираете группу ячеек и переходите к Вставка -> Таблица, а затем к объекту таблицы, Excel определяет Диапазон с именем этой таблицы: именованный Диапазон. На этот диапазон можно ссылаться непосредственно в VBA как таковой:
Set mytable = Range("Table1")
Обратите внимание, что имена диапазонов могут не содержать пробелов
Если предположить, что у вас есть именованный Range, это может быть что-то вроде этого:
Sub LOf()
Dim myrange As Long, lastrow As Long, finalrow As Long, resultrow As Long
Dim mytable As Range
lastrow = ShSReturn.Range("G" & ShSReturn.Rows.Count).End(xlUp).Row
finalrow = ShSReturn.Range("C" & ShSReturn.Rows.Count).End(xlUp).Row
resultrow = ShSReturn.Range("B" & ShSReturn.Rows.Count).End(xlUp).Row
Set mytable = ActiveSheet.Range("SurveyReturn") ' It's best to specify which sheet your source data is on. Presumably "ShSReturn" is the CodeName of your results sheet
Dim x As Long
For x = 7 To mytable.Cells(mytable.Cells.Count).Row ' Start at Row 7, and finish at the row number of the last cell in that Range
If mytable.Cells(x, **lastrow**).Value = "Ongoing" And mytable.Cells(x, **finalrow**).Value = "HP" Then
mytable.Cells(x, **resultrow**).Copy
ShPPT.Cells(cell, 17).PasteSpecial xlPasteValues
resultrow = resultrow + 1
End If
Next x
End Sub
Обратите внимание, что приведенный выше код не будет работать в его нынешнем виде. То, что я сделал, является приближением того, что я думаю вы ищете: однако вам придется проделать небольшую работу, потому что у кода в вашем вопросе есть некоторые фундаментальные проблемы. Например, в вашем коде у вас есть такие строки:
mytable.Cells(cell, resultrow).Copy
Однако адресуемые ячейки в пределах диапазонов имеют формат Range.Cells (Row, Column ) - где Row и Column являются числами. Однако в вашем коде resultrow , как определено вверху, это строка, а не столбец. Вам нужно решить, что именно вы хотите скопировать, в зависимости от того, какая строка / столбец, и соответственно переписать свой код.
Если вы хотите внести ясность, я с радостью отредактирую свой ответ, чтобы учесть то, что вы хотите.