Используйте дальний объект для цикла - PullRequest
0 голосов
/ 28 мая 2019

Я ищу определенный заголовок и сохраняю его в качестве объекта ранжирования (FindEQ4). Теперь я хочу использовать этот заголовок в качестве отправной точки для объекта с динамическим диапазоном. У меня вопрос, как я могу получить информацию о том, что заголовок 1 находится в C5 и использовать его как Set TestR = .Range("C" & 5 + x)?

 Sub FindCopyPasteV3()

    With Worksheets("Sheet1").Range("A:FF")

        Dim FindEQ4 As Range
        Dim TestR As Range
        Dim x As Long

        Set FindEQ4 = .Find(What:="Header 1", LookAt:=xlWhole, MatchCase:=True, SearchFormat:=False)

        'I'm looking for something like TestR = .Range("FindEQ4" + x)  
        'which works like Set TestR = .Range("C" & 5 + x) 

    End With

End Sub

enter image description here

Ответы [ 2 ]

2 голосов
/ 28 мая 2019

Использование свойств .Column или .Row для объекта Range:

Option Explicit
Sub test()

    Dim FindEQ4  As Range
    Dim StartRow As Long
    Dim StartColumn As Long
    Dim TestR As Range

    With ThisWorkbook.Sheets("Sheet1")
        Set FindEQ4 = .Range("A1")
        StartRow = FindEQ4.Row + 1
        StartColumn = FindEQ4.Column
        Set TestR = .Cells(StartRow, StartColumn) 'A2
    End With

End Sub
1 голос
/ 28 мая 2019

Используйте свойство Offset объекта Range.

https://docs.microsoft.com/en-us/office/vba/api/excel.range.offset

Возвращает диапазон, смещенный от оригинала на указанную величину.Первый параметр - это количество строк, на которые необходимо сместить (положительное значение вниз, отрицательное значение вверх), а второй параметр - количество столбцов, на которое необходимо сместить значение (положительное значение справа, отрицательное значение слева).

, например,

.Range("D7").offset(-3,2) будет представлять «F4», 3 строки вверх и 2 столбца справа.

Sub FindCopyPasteV3()

    With Worksheets("Sheet1").Range("A:FF")

        Dim FindEQ4 As Range
        Dim TestR As Range
        Dim X As Long

        Set FindEQ4 = .Find(What:="Header 1", LookAt:=xlWhole, MatchCase:=True, SearchFormat:=False)


        Set TestR = FindEQ4.Offset(X, 0) 'X rows down, same column



    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...