【问题标题】:how to use dynamic variable insted of sheet name in vba如何在vba中使用动态变量而不是工作表名称
【发布时间】:2018-07-30 11:31:15
【问题描述】:

每天我需要将今天的期初余额和前一天的期末余额联系起来,我已经记录了这样的宏

    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 中使用工作表名称的变量吗

【问题讨论】:

  • 是的,你可以:-)

标签: excel vba dynamic-variables


【解决方案1】:

试试

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")

【讨论】:

  • ... 到前一天的收盘余额.. 我认为 OP 想要前一天,所以s = Format$(DATE-1,"dd.mm.yy"),但我可能是错的。无论如何,你的代码很好:)
  • 糟糕!谢谢你。
【解决方案2】:

你可以基于一个字符串变量。

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

【讨论】:

    猜你喜欢
    • 2022-11-13
    • 2018-04-07
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    相关资源
    最近更新 更多