如何在VBA中使用带有工作表名称的动态变量

时间:2018-07-30 11:31:16

标签: excel vba dynamic-variables

每天我都需要将今天的期初余额与前一天的期末余额相关联,我已经记录了这样的宏

    Range("D5").Select
ActiveCell.FormulaR1C1 = "='27.07.18'!RC[6]"
Range("D5").Select
Selection.AutoFill Destination:=Range("D5:E5"), Type:=xlFillDefault
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:E86"), Type:=xlFillDefault
Range("D5:E86").Select
Range("D82").Select

这可以完成工作,但是每天我都要给文件名加上今天的日期(因为日期是我的工作表名称)

我可以在FormulaR1C1中使用可变的工作表名称吗?

2 个答案:

答案 0 :(得分:3)

尝试

Dim s As String
s = Format$(DATE,"dd.mm.yy")
ActiveCell.FormulaR1C1 = "='" & s &"'!RC[6]"

假定工作表已经存在此名称。否则首先您需要

Sheets.Add
Activesheet.Name = s

并且您需要让ActiveCell实际引用原始单元格,因为新添加的工作表可能会改变它。

*注意::如果前一天,请使用s = Format$(DATE-1,"dd.mm.yy")

答案 1 :(得分:0)

您可以基于字符串var。

dim ws1 as string, ws2 as string

ws1 = "26.07.18"
ws2 = "27.07.18"

with worksheets(ws2)
    .Range("D5:E86").FormulaR1C1 = "='" & ws1 & "'!RC[6]"
end with

也许您每天都将工作表添加到队列的末尾。

with worksheets(worksheets.count)
    .Range("D5:E86").FormulaR1C1 = _
        "='" & worksheets(worksheets.count-1).name & "'!RC[6]"
end with