首页 > 解决方案 > 使用命名范围字母作为起点

问题描述

我使用列 R、ES 或 KE 作为不同事物的起点。但是,我确信这本工作手册会发展,因为它已经这样做了,而且这些起点将会改变。我有很多这些起点的实例,因此我想这样做,以便我可以非常快速地更改这些值,而不是遍历所有代码。

为此,我创建了一个命名范围并将其命名为 'vb_PercentLetter' 。这是 R 列的起点。vb_PercentLetter 的值是 'R' 在 vba 我这样使用它:

    x = ws1.Range("vb_PercentLetter" & rowCounter).Offset(0, colCounter) * 100

但是,这不起作用我可以使用这种方法,还是应该恢复做其他事情?

标签: excelvbanamed-ranges

解决方案


这是您对 Jeeped 的评论:“vb_PercentLetter 实际上只是字母 R,没有别的,所以它没有分配给任何工作表”

如果是这种情况,则 vb_PercentLetter 实际上是工作簿名称而不是命名范围。“R”不是一个范围。

Names("vb_PercentLetter")将返回="R"

使用常量表达式将给出所需的结果

在公共代码模块中

Public vb_PercentLetter = "R"

我更喜欢枚举每个工作表的列。这使得维护代码变得非常容易。

Public Enum WSCoumns1
    ws1Percent = 10
    ws1ES = 11
    ws1KE = 12
End Enum

在此处输入图像描述

枚举语法

 ws1.Cells(rowCounter, ws ).Offset(0, colCounter).Offset(0, colCounter) * 100

推荐阅读