如何使单元格引用成为变量的函数?
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
我将使用同一个宏 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