Tho*_*mas 5 excel vba excel-vba
我正在处理一个带有几个子的Excel文件,它们彼此独立.但是他们仍然始终使用相同值的相同变量.因此,我想在全局定义变量,但我发现很容易就是只在全局声明它们.我该怎么办呢?我还可以从头开始直接用变量填充变量?是否有可能从一开始就定义变量而不必编写子类,如下例所示?(我相信这是不可能的,还是我错了?)
非常感谢你的帮助!
托马斯
Public s1, s2, s3 As Worksheet
Public array1, array2 As Variant
s1 = ThisWorkbook.Worksheets("Sheet 1")
s2 = ThisWorkbook.Worksheets("Sheet 2")
s3 = ThisWorkbook.Worksheets("Sheet 3")
array1 = Array(3, 5, 6, 7, 5)
array2 = Array(8, 9, 10, 11, 12)
Sub code1()
...
End Sub
Sub code2()
...
End Sub
Run Code Online (Sandbox Code Playgroud)
是否有可能从头开始定义变量而不必编写子?
不,您只能在子过程或函数中获取/设置变量的值.
另外,请注意您当前的代码:
Public s1, s2, s3 As Worksheet
Public array1, array2 As Variant
Run Code Online (Sandbox Code Playgroud)
声明s1和s2as Variant和s3as Worksheet- 在VBA中常见的误解是你可以用这种方式声明多个相同类型的变量.
在VBA中的一行执行此操作的正确方法是:
Public s1 As Worksheet, s2 As Worksheet, s3 As Worksheet
Run Code Online (Sandbox Code Playgroud)
我会对第二行说同样的话,但你已经宣称它是一个变种.
您可以在模块中将它们定义为公共变量,然后在 ThisWorkBook 模块的 Workbook_Open 中设置它们(其中工作表在 MS Visual Basic 编辑器中列出):
Public Sub Workbook_Open()
Set s1 = ThisWorkbook.Worksheets("Sheet 1")
Set s2 = ThisWorkbook.Worksheets("Sheet 2")
Set s3 = ThisWorkbook.Worksheets("Sheet 3")
array1 = Array(3, 5, 6, 7, 5)
array2 = Array(8, 9, 10, 11, 12)
End Sub
Run Code Online (Sandbox Code Playgroud)
每当电子表格首次打开时都会执行此方法。
| 归档时间: |
|
| 查看次数: |
3625 次 |
| 最近记录: |