gpt4 book ai didi

vb.net - vba 语言中的变量作用域类型

转载 作者:行者123 更新时间:2023-12-01 12:57:43 33 4
gpt4 key购买 nike

我试图理解 VBA 范围类型,在 VBA 中不可能做到这一点,但在其他语言(java、scala 等)中是可能的:

public sub try()

dim myVar as String
myvar = "hello world"

Call displayVar()

end sub

public sub displayVar()
msgbox (myvar)
end sub

你能给我一些关于这种有限范围界定的信息吗?它是动态的还是词汇的,我不太明白其中的区别:/

最佳答案

Franck Leveque 清晰而简单地展示了局部声明和全局声明之间的区别。

但是,与大多数语言一样,VBA 允许您将参数传递给子例程。有时全局变量是唯一的选择或唯一明智的选择。但通常最好在 try 中声明 myVar 并将其作为参数传递给 displayVar。这可以防止 displayVar 意外更改 myVar,因为默认情况下,参数作为值传递。如果您希望子例程更改参数的值,您必须显式地将参数作为引用传递。大多数现代编程语言都是如此。

另请注意,Public 表示这些子例程对其他模块中的子例程可见。如果 Public 被省略或替换为 Private,则 trydisplayVar 将仅在其模块中可见。

在下面的代码中,我将 myVar 的值作为参数传递给 displayVar

Public Sub try()

Dim myVar As String

myvar = "hello world"
Call displayVar(myVar)

End Sub

Public Sub displayVar(Stg As String)
Call Msgbox(Stg, VBOKOnly)
End Sub

关于vb.net - vba 语言中的变量作用域类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8755374/

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