Excel:使用 VBA 命名范围

标签 excel list vba 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

有人可以将我推向正确的方向,仅使用整数指定此范围吗?

最佳答案

当您的目标范围是 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

希望这有帮助

编辑:或者:

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

关于Excel:使用 VBA 命名范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228087/

相关文章:

MySQL 将 1 个结果定义为 SELECT 查询的文本

c# - 使用 List<string> 类型作为 DataRow 参数

python - 在 Python 中对几个列表中的每个元素求和

vba - 在 Excel VBA 中选择工作表范围

excel - 在没有 vba 的 excel 中将列表和自定义公式数据验证合并到一个单元格中

arrays - Excel "Subtotal"数组公式 - sum.if 的其他形式

excel - .Range ("...").Find 生成对象变量或未设置 block 变量

python:制作列表列表时,我必须将它们包含在方括号中吗?

excel - 为什么这个暗淡定义错误?

vba - 从 Excel 应用程序隐藏 VBA 过程,但不从其他项目隐藏 VBA 过程