Excel 将公共变量传输到其他工作表时出现问题
我正在清理宏(excel中的20个VBA模块),这些宏基于10个不同的excel文件和几个选项卡创建一个总体项目报告 我想简化我的数据交换代码 发件人:Excel 将公共变量传输到其他工作表时出现问题,excel,vba,variables,public,transfer,Excel,Vba,Variables,Public,Transfer,我正在清理宏(excel中的20个VBA模块),这些宏基于10个不同的excel文件和几个选项卡创建一个总体项目报告 我想简化我的数据交换代码 发件人: Set InitRNG = Workbooks("Master - PSSR.xlsm").Worksheets("PSSRList").Range("A2:C" & LastRow) Set TargetRNG = Workbooks("Master - turnover Report.xlsm").Worksheets("Lib_P
Set InitRNG = Workbooks("Master - PSSR.xlsm").Worksheets("PSSRList").Range("A2:C" & LastRow)
Set TargetRNG = Workbooks("Master - turnover Report.xlsm").Worksheets("Lib_PSSR").Range("A2:C" & LastRow)
Call TransfRange(InitRNG, TargetRNG)
致:
所以我必须将简化工作簿和工作表名称声明为public
容易做,但不起作用
下面是我做的简单测试
在此工作簿中:
Option Explicit
Public WBmaster As Workbook
Public WSMgraph As Worksheet
Public WSMminitables As Worksheet
Public WSMtable As Worksheet
Public x As String
Sub Workbook_Open()
Set WBmaster = Workbooks("Master - Turnover report.xlsm")
Set WSMgraph = WBmaster.Worksheets("4graph")
Set WSMminitables = WBmaster.Worksheets("MiniTables")
Set WSMtable = WBmaster.Worksheets("Table")
x = "blabla"
MsgBox "x=" & x
End Sub
工作正常,“x=blabla”出现
然后是主宏,在一个模块中
Sub Main()
MsgBox "x=" & x
End Sub
答案是“x=”
失去了价值。。。。
我做错了什么试着在普通模块而不是worbook模块中声明
x
。变量只在运行中使用,在Workbook\u Open
事件中给出一个变量值,如果Main()
过程没有在同一事件上运行,它将清空所有变量。您需要在代码的同一“运行”中为变量赋值,每次运行都会重置变量。如果你需要在两次跑步之间拿东西,找一张隐藏的床单,把你需要的东西拿在那里。。正如@SJR所说,在普通模块的顶部声明x
。
Sub Main()
MsgBox "x=" & x
End Sub