【发布时间】:2016-01-25 19:11:56
【问题描述】:
我对 VBA 编码非常陌生,老实说,我对自己在做什么并不太了解。但我走了。
我正在寻找:
- VBA 代码可以有动态值吗?因此,不是在设置表(例如“Sheet1”)上执行的代码,而是根据某个单元格中的值更改值。
- 触发另一个工作簿上的 VBA。例如,我想从 Workbook A 运行一个 VBA,它会触发 Workbook B 上的 VBA。
为了充分说明我想打开 Workbook A(如果需要,也可以打开 Workbook B,没关系)并单击一个在 上运行 VBA 的按钮>工作簿 B 但在某个工作表上,具体取决于 Excel A 中单元格的值(如果单元格显示“sheet3”,则 VBA 在 工作簿 B 上的“sheet3”上运行)。我还希望 Workbook A 中的单元格引用 Workbook B 中的单元格,但工作表名称是动态的。例如,我在下面粘贴了基本单元格引用,但我希望它根据单元格中的值而改变,而不是 Sheet1。
='[Workbook B.xlsx]Sheet1'!$A$4
我知道这听起来很复杂和令人困惑,但如果我能得到任何帮助,将不胜感激。
Sub ReportStepOne()
Dim myRow As Long
myRow = 4
Rows(myRow).Value = Rows(myRow).Value
Dim rng As Range
Set rng = Range("A4:AC200")
rng.Cut rng.Offset(1, 0)
Range("A1:AC1").Copy Range("A4:AC4")
End Sub
我想:
- 编辑此代码以使其在某个工作表上触发
- 使工作表名称引用到 Report.xlsm 中单元格 A o Sheet2 中的任何内容。
- 在 Report.xlsm 中运行运行上述脚本的宏(在名为“Historical Data.xlsm”的文件中称为“StepOne”
【问题讨论】:
-
以上代码驻留在哪个工作簿中,
Report.xlsm或Historical Data.xlsm?如果我理解正确,这段代码应该在Report.xlsm的工作表上执行,该工作表基于Report.xlsm中的 sheet2 上的单元格 -
代码在
Historical data.xlsm上,当前在活动工作表上触发。我希望让它在特定的工作表上触发,其中宏从Reports.xlsm的单元格中引用“工作表名称”。然后在Reports.xlsm中有一个宏/按钮,使上述宏运行。这是我正在尝试开发的一个新的报告系统(我必须运行这个宏大约 40 次)。感谢您的帮助@SilentRevolution。很抱歉造成混乱。 -
所以上面的代码位于
historical data.xlsm需要引用一个工作表来检索reports.xlsm中的工作表名称,然后执行代码。reports.xlsm的表 2 上命名的表是指historical data中的表还是reports.xlsm上的表?您是否总是同时打开两个工作簿,如果不是,打开哪个工作簿? -
该代码将引用
reports.xlsm中 Sheet2 上的单元格 A4。是的,reports.xlsm中的工作表名称是指historical data.xlsm中的工作表名称。reports.xlsm中的单元格 A4 将自动更新为新的客户名称,每个客户在historical data.xlsm中都有自己的工作表。我将同时打开这两个文件。