使用命名范围字母作为起点

Using a named range letter for a starting point

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

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

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

然而,这不起作用 我可以使用这种方法吗,还是应该改用其他方法?

这是您对 Jeeped 的评论:"the vb_PercentLetter is literally just the letter R, nothing else, so it isn't assigned to any worksheet"

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

Names("vb_PercentLetter") 将 return ="R"

使用常量表达式会得到想要的结果

在 Public 代码模块中

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