Очень плохо знаком с VBA.У меня возникли проблемы с объявлением переменной в качестве определенной ячейки на листе.
Я пытался определить ячейку по строкам и столбцам, но когда я помещаю часы в строку, она говорит, что значение вне контекста.Переменная testname, и она находится в ячейке E2 рабочего листа, который я установил в качестве переменной raw.
Sub findcomponents()
Dim raw As Worksheet
Dim res As Worksheet
Dim temp As Worksheet
Dim testname As String
Dim finalrow1 As Integer
Dim finalrow2 As Integer
Dim i As Integer
Set raw = Worksheets("rawdata")
Set res = Worksheets("resultcomponents")
Set temp = Worksheets("uploadtemplate")
testname = raw.Range("E2").Value
finalrow1 = raw.Range("A10000").End(xlUp).Row
finalrow2 = res.Range("A10000").End(xlUp).Row
For i = 2 To finalrow2
If res.Cells(i, 4) = testname Then
Range(Cells(i, 2), Cells(i, 4)).Copy
temp.Range("A10000").End(xlUp).Cells("A2").Paste
End If
Next i
End Sub
Я ожидаю, что значением будет строка в ячейке E2 Редактировать: я добавил оставшуюся частькод.Когда я бегу, это ничего не делает.Предполагается взять строку testname и пройтись по списку на листе res и вернуть совпадения.Я поместил часы в строку testname, потому что я думал, что это покажет мне, что она сравнивает правильную строку, а значение в строке наблюдения говорит
да, строка вставки неверна.Я также попробовал temp.Range ("A10000"). End (xlUp) .Offset (1, 0) .Paste, и это тоже его злит.
Исправление работает с редактированием имени листа.Но есть больше, чем 1 совпадение на рабочем листе res.Вот почему я подумал, что поиск последней строки (но я должен иметь смещение 1 строки) вернет все совпадения.Это работает, чтобы вернуть все значения.temp.Range ("A10000"). End (xlUp) .Offset (1, 0) .PasteSpecial xlPasteValues
Есть ли лучший способ сделать это, не используя Range ("A10000"). End (xlUp)