Excel:使用VBA命名范围

Jor*_*ort 4 excel vba list range named

我正在尝试使用VBA在Excel中定义命名范围.基本上,我有一个可变列号.然后运行循环以确定该特定列中的第一个空单元格.现在我想要定义一个命名范围,从该特定列的第2行到该列中包含数据的最后一个单元格(第一个空单元格 - 1).

例如,指定了第5列,其中包含3个值.如果我是正确的,我的范围将是(2,5)(4,5).我只是想知道如何仅使用整数而不是(E2:E4)来指定此范围.它可能吗?

我发现这段代码定义了一个命名范围:

'Change the range of cells (A1:B15) to be the range of cells you want to define
    Set Rng1 = Sheets("Sheet1").Range("A1:B15") 
    ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng1
Run Code Online (Sandbox Code Playgroud)

任何人都可以用正确的方向推动我使用整数来指定这个范围吗?

Har*_*rag 6

当您定位E2:E4时,您需要指定单元格位置.以下函数可能对你有用,传递列号,例如5,它将重新调整地址,因此5 = E和27 = AA

ColLetter = ColNo2ColRef(colNo)
Set Rng1 = Sheets("Sheet1").Range(ColLetter & "2:" & ColLetter & "4") 
ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng1

Function ColNo2ColRef(ColNo As Long) As String
    ColNo2ColRef = Split(Cells(1, ColNo).Address, "$")(1)
End Function
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

编辑:或:

Set rng = Range(Cells(2, 5), Cells(4, 5)) 'E2:E4
ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng
Run Code Online (Sandbox Code Playgroud)