如何使单元格引用成为变量的函数?

How can I make a cell reference a function of a variable?

我将使用同一个宏 24 次,但每次的范围都会不同(但速率不变)。因此,我认为将引用编写为函数会很聪明,以减少代码的长度,并使其更容易更改。

现在看起来像这样:

    Sheets("Planned time").Select
    Range("I15:NJ32").Select
    Selection.Copy
    Sheets("Diff").Select
    Range("I9").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

但我希望它是这样的:

    Sheets("Planned time").Select
    Range("I(15+171x):NJ(32+171x)").Select
    Selection.Copy
    Sheets("Diff").Select
    Range("I(9+56x)").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

其中宏循环 24 次,但对于每个循环,将 x 的值增加 1。x 在第一次迭代中需要为 0,在最后一次迭代中需要为 23(总共 24 次迭代)。

我知道编码可能还很遥远,但我认为它很好地说明了我想要完成的事情。

如有任何帮助,我们将不胜感激。

更新: 已解决

Dim x As Integer

For x = 0 To 23

Sheets("Planned time").Select

Range("I" & cstr(15+171*x) & ":NJ" & cstr(32+171*x)).Select

Selection.Copy

Sheets("Diff").Select

Range("I" & cstr(9+56*x)).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Next x

您想构建一个字符串表达式,当在 VBA 中求值时,该表达式将是一个有效地址:

Range("I" & cstr(15+171*x) & ":NJ" & cstr(32+171*x)).Select

我假设您知道如何构建 FOR 循环。

您还可以 'build' 使用数字单元格(行、列)表达式来对引用进行范围选择:

Range(cell(15+171*x,10),cell(32+171*x,374)).select