回答
.NET已经宠坏我们初始化它们:) 你的声明是无效的VBA。
在应用程序加载时,只有常数可以被赋予一个值。你声明它们像这样:
Public Const APOSTROPHE_KEYCODE = 222
下面是一个示例声明从我的VBA项目之一:
如果您正在寻找在那里你声明一个公共变量东西,然后想初始化它的值,你需要创建一个Workbook_Open子并在那里进行初始化。 例子:
Private Sub Workbook_Open()
Dim iAnswer As Integer
InitializeListSheetDataColumns_S
HideAllMonths_S
If sheetSetupInfo.Range("D6").Value = "Enter Facility Name" Then
iAnswer = MsgBox("It appears you have not yet set up this workbook. Would you like to do so now?", vbYesNo)
If iAnswer = vbYes Then
sheetSetupInfo.Activate
sheetSetupInfo.Range("D6").Select
Exit Sub
End If
End If
Application.Calculation = xlCalculationAutomatic
sheetGeneralInfo.Activate
Load frmInfoSheet
frmInfoSheet.Show
End Sub
请务必申报工作簿中的子对象本身:
+1为您的答案的非常图形/教学精神! – CaBieberach 2011-05-06 08:25:07
它已经有一段时间,但我相信这将是:
Public MyVariable as Integer
MyVariable = 123
这恐怕不能编译。看起来太久了! – David 2011-05-05 15:17:44
具体而言,'Public'声明必须是*例程之外('Sub'或'Function'),*内部的值赋值*。 – RolandTumble 2011-05-05 18:54:10
你当然知道,但如果它的常量,那么const MyVariable as Integer = 123
否则你的运气了;该变量必须在别处分配一个初始值。
,你可以:
public property get myIntegerThing() as integer
myIntegerThing= 123
end property
一类模块中
然后在全球创建它;
public cMyStuff as new MyStuffClass
因此cMyStuff.myIntegerThing
立即可用。
您可以在通用声明中定义变量,然后在您的环境中触发的第一个事件中对其进行初始化。
或者,你可以创建自己与相关属性的类,并在初始化方法
为了向您提供一个不同的角度 -
我觉得这不是维护社会是个好主意函数调用之间的变量。您需要使用的任何变量都应存储在Subs和Functions中,并作为参数传递。代码运行完毕后,您不应该期望VBA项目维护任何变量的值。
原因是只有大量的东西会在使用工作簿时无意中重置VBA项目。发生这种情况时,任何公共变量都将重置为0.
如果您需要将值存储在您的子函数和函数之外,我强烈建议使用具有命名范围的隐藏工作表来查找需要保留的任何信息。
它已经相当长一段时间,但是这可能会令你满意:
Public MyVariable as Integer: MyVariable = 123
这是一个有点难看,因为你必须重新输入变量名,但它是在同一行。
它产生编译错误:外部程序无效 – 2015-09-15 13:16:48
如上所述,要声明全局可访问变量,您可以在公用关键字之前的函数之外执行此操作。
而且,由于做作不是程序之外允许,你可以,例如,创建一个子叫InitGlobals会初始化你的公共变量,那么你只需要调用这个子程序在您的报表开始
这里是它的一个例子:
Public Coordinates(3) as Double
Public Heat as double
Public Weight as double
Sub InitGlobals()
Coordinates(1)=10.5
Coordinates(2)=22.54
Coordinates(3)=-100.5
Heat=25.5
Weight=70
End Sub
Sub MyWorkSGoesHere()
Call InitGlobals
'Now you can do your work using your global variables initialized as you wanted them to be.
End Sub
这是我做什么,当我需要初始化的全局常量:
1.添加一个名为Globals
2.添加这样的属性模块到Globals
模块:
Property Get PSIStartRow() As Integer
PSIStartRow = Sheets("FOB Prices").Range("F1").Value
End Property
Property Get PSIStartCell() As String
PSIStartCell = "B" & PSIStartRow
End Property
- 1. 如何在一个类中声明公共变量变量
- 2. 是否可以给一个变量的默认值
- 3. 在Handlebar中声明公共变量JS
- 4. 在模块中声明一个公共变量
- 5. 公共变量在VBA中并不是真正公开的
- 6. 是否有可能在Java中声明一个1位变量?
- 7. 是否可以指定仅用于const操作的公共成员变量public?
- 8. 声明默认指针值的函数
- 9. 开箱时是否可以指定默认值?
- 10. 是否有可能在另一个变量中使用未声明的变量
- 11. 斯威夫特公共变种使用默认值,并为默认值
- 12. 是否可以在条件中声明变量?
- 13. (XQuery/Conditions)是否可以在if语句中声明变量?
- 14. 是否可以在Swift中声明一个空函数作为变量?
- 15. Excel - 是否可以为特定单词声明变量?
- 16. 在VB6中,声明字段是否有默认值?
- 17. bash - 声明一个变量而不指定值
- 18. 在JMeter中,您可以指定变量来填写HTTP请求默认值吗?
- 19. 我可以同时在VBA中声明和分配变量吗?
- 20. 用'def'声明一个变量并用一个已知类型声明变量是否有区别?
- 21. 是否可以在变量声明中创建AVAudioPlayer()并避免选项/解包?
- 22. 是否可以同时声明可变和不可变的值/绑定?
- 23. 是否可以测试一个C定义是否在gnu Makefile中声明?
- 24. 在VBA公式中使用声明变量
- 25. 实例变量是否可以在类的底部声明?
- 26. 是否可以强制JavaScript在使用前声明变量?
- 27. 是否可以在声明后初始化最终变量..?
- 28. 如何在php中的公共静态函数之外声明一个变量?
- 29. 是否可以使用search.luceneSearch与以前声明的变量?
- 30. php公共属性默认值分配为变量
这个VBA在哪里运行? Excel,Access,Word ... – 2011-05-05 12:53:53
@DuncanHowe我希望有一个通用的vba解决方案。 – David 2011-05-05 15:13:53
全局变量不再被视为邪恶吗? 5月份我离开了几个星期,所以我可能错过了一些东西。 – 2011-07-04 07:46:23