我有一个宏,它在当前工作表中插入2列,并粘贴另一个工作表中的信息。
我想创建2个变量,分配给每一列,下次运行宏将信息粘贴到下两列时,这些变量将发生变化。
Columns("BO:BO").Select
Selection.Insert Shift:=xlToRight
Range("BO2").Select
ActiveCell.FormulaR1C1 = "Feb weekly-wk 2"
Range("BO19").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(Comparison!RC2,'Jan16 wk4'!R3C15:R34C24,9,FALSE)"
Range("BO19").Select
Selection.AutoFill Destination:=Range("BO19:BO47"), Type:=xlFillDefault
Range("BO19:BO47").Select
Columns("BP:BP").Select
Selection.Insert Shift:=xlToRight
Range("BP2").Select
Selection.Style = "20% - Accent6"
Range("BP2").Select
ActiveCell.FormulaR1C1 = "Diff"
Range("BP19").Select
ActiveCell.FormulaR1C1 = "=RC[-2]-RC[-1]"
我的想法是设置一个变量,用它替换当前的“BO”和“BP”代码。
Dim X as String, Y as String
X = "BO"
y = "BP"
当我运行宏时,它会将此示例的变量“BO”更改为“BQ”,“BP”更改为“BR”。下次我运行宏时,它会将“BQ”更改为“BS”,“BR”更改为“BT”。
3条答案
按热度按时间vlurs2pr1#
如果你不是真的将BO/BP写入你正在转换的范围,我会用两个整型,存储在一个隐藏的工作表中。每次运行宏时读/写。
在我看来,这是更简单的解决方案,其他地方可以去global variables或将其存储到文件中。
fhity93d2#
我只是稍微清理了一下代码:
面向未来:如果可以,尽量避免。如果可能,选择/Selection/.Activate。代码大多数情况下可以在没有这些命令和不激活单元格的情况下运行。)
baubqpgj3#
如果要使用数值变量,可以更改方法,使用
Cells
代替Range
:这使得您能够简单地使用
for ... next
循环列如果需要从业务对象循环到BR,可以使用
希望能有所帮助。