Как передать явный параметр объекту Range? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь получить ячейку первого ряда, где установлен объект Range.Также избегайте использования Activate, Select.Диапазон является динамическим (обновляется до новой строки в цикле), поэтому использование Offset не сработает.

Вот что у меня есть:

Set curr_ws = Worksheets("Data")
Dim data_curr_rng As Range
tool_sel = curr_ws.Range(data_curr_rng.Address(0, 0)).Offset(-4).Value
'Regardless of the column number of `data_curr_rng`, I need the cell in that column's Row 1

Я игралс переменной data_curr_rng, но, похоже, не может определить правильные функции / свойства для использования.

Ответы [ 3 ]

1 голос
/ 03 мая 2019

Вы можете использовать Cells() функцию Worksheet

my_row = 1
my_column = 5
Set my_range = Application.ThisWorkbook.Sheets(1).Cells(my_row, my_column)

Если вам нужно выбрать диапазон из более чем одной ячейки, вы можете обернуть ее в Range следующим образом

start_row = 1
start_column = 5
end_row = 10
end_column = 5
Set start_cell = Application.ThisWorkbook.Sheets(1).Cells(start_row, start_column)
Set end_cell = Application.ThisWorkbook.Sheets(1).Cells(end_row, end_column)
Set my_range = Application.ThisWorkbook.Sheets(1).Range(start_cell, end_cell)
0 голосов
/ 04 мая 2019

Ваш оригинальный код:

Set curr_ws = Worksheets("Data")
Dim data_curr_rng As Range
tool_sel = curr_ws.Range(data_curr_rng.Address(0, 0)).Offset(-4).Value
'Regardless of the column number of `data_curr_rng`, I need the cell in that column's Row 1

То, что вы просите, - это взять выбранный диапазон, идентифицировать полный столбец, а затем взять первую ячейку (которая будет строкой 1).

Set curr_ws = Worksheets("Data")
Dim data_curr_rng As Range
Set data_curr_rng = [Something] ` your example does not note how you set this.
' *** The solution to your question is below
Dim firstCellInColumn as Range ` could be cell etc. - using this to illustrate the concept
Set firstCellInColumn = data_curr_rang.EntireColumn.Cells(1,1)
' *** The back to your code
tool_sel = firstCellInColumn.Value

Метод EntireColumn возвращает диапазон, а затем в моем примере выше я просто взял первую ячейку в этом диапазоне.

0 голосов
/ 03 мая 2019

У курсора есть код для этого, ActiveCell, Вы можете использовать ActiveCell в сочетании с Row и .End ()

Приведенный ниже код возвращает первую ячейку ВВЕРХ (Ctrl + UpArrow)

   ActiveCell.End(xlUp)

Код ниже

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