如何将显式参数传递给Range对象?

时间:2019-05-03 15:16:12

标签: excel vba

我正在尝试获取设置Range对象的第一行的单元格。同时避免使用ActivateSelect。范围是动态的(将循环更新为新行),因此无法使用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 个答案:

答案 0 :(得分:1)

您可以使用Cells()的{​​{1}}功能

Worksheet

如果您需要选择一个以上单元格的范围,可以像这样将其包装在my_row = 1 my_column = 5 Set my_range = Application.ThisWorkbook.Sheets(1).Cells(my_row, my_column)

Range

答案 1 :(得分:0)

光标所在的位置具有此代码,ActiveCell, 您可以结合使用ActiveCell和Row和.End()

下面的代码返回第一个单元格UP(Ctrl + UpArrow)

   ActiveCell.End(xlUp)

下面的代码

答案 2 :(得分:0)

您的原始代码是:

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方法返回一个范围,然后在上面的示例中,我只是获取了该范围内的第一个单元格。