gpt4 book ai didi

excel - MS Excel VBA : Is it faster to use Public Variables or Pass Variables between Subs?

转载 作者:行者123 更新时间:2023-12-02 19:18:52 26 4
gpt4 key购买 nike

我不是最精明的 VBA 编码员,所以我很感激你的建议!我有多个模块,其中每个模块都需要访问一本工作簿(Master.xlsm)。 1) 使用公共(public)变量在其他模块中访问此工作簿更快,还是 2) 在使用它的每个子程序中打开它更快?

选项#1

我会将工作簿设置为公共(public)变量,并在使用 Auto_Open 打开工作簿时对其进行分配。

Public wbk_MASTER As Workbook

Sub Auto_Open()

Set wbk_MASTER = Workbooks.Open("C:\Master.xlsm")

End Sub

选项#2

或者,在每个使用 Master.xlsm 的子程序中,我只需将其传递如下:

Sub DoSomething(wbk_master as Workbook)

' do something

End Sub

假设无论什么子程序调用这个子程序都会看起来像:

Sub CallDoSomething()

Dim wbk_master as Workbook
Set wbk_master = Workbooks.Open("C:\Master.xlsm")

Call DoSomething(wbk_master)

End Sub

请注意,会有多个子项,例如 DoSomething。如果有影响的话,我还希望在 Master.xlsm 中为重要工作表提供变量,甚至是特定范围内的值。

就我个人而言,我认为选项 #1 更干净,但哪个更快?

最佳答案

德克已经直接回答了你的问题,但是更具弹性的第三种选择怎么样?

在标准模块中:

Public Property Get SourceWorkbook() as Workbook

Static wkb_Master As Workbook

If wkb_Master is Nothing Then Set wkb_Master = Workbooks.Open("C:\Master.xlsm")

Set SourceWorkbook = wkb_Master

End Property

然后就可以使用它了:

Sub test()

SourceWorkbook.Sheets(1).Name

End Sub

它使范围保持较小且只读,此外,如果您的项目被重置,将重新打开源文档 - 您的方法都不会执行此操作。

关于excel - MS Excel VBA : Is it faster to use Public Variables or Pass Variables between Subs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46431764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com