Excel的VBA。我想创建一个变量,稍后我将在其他几个潜艇中使用它。关于这方面的其他问题,我公开宣布变量
Public Counter As Integer
然后,我继续使用子
给变量赋值Sub Count()
Set sh2= ActiveWorkbook.Sheets("Sheet2")
Set sh1 = ActiveWorkbook.Sheets("Sheet1")
Dim rng As Range
Dim trng As Range
Set trng = sh2.Range("A4:HV4")
For Each rng In trng
If rng.Value = "Name" Then
Counter = Range(rng, rng.End(xlToLeft)).Columns.count
End If
Next rng
如果我尝试测试值计数具有的相同子值,例如
sh1.range("B1").value = counter
我得到了正确的号码。
但是,一旦我尝试在另一个子上调用它,值为0!
Sub Test()
Range("F1").Value = counter
end sub
我也试过在我的测试子上调用Count子,但也没有结果。
有什么想法吗?谢谢!
答案 0 :(得分:2)
Public
类型在VBA项目中没有可见性,至少没有它们的Object引用。因此,如果在工作表对象\ UserForm \ Class中声明变量为Public
,则需要对该变量使用完整引用。例如,如果在Sheet1中声明Counter
,则使用Sheet1.Counter
。
Global
变量可通过VBA项目访问。您不需要调用其父对象名称进行引用。这里只有一个问题,Global
个变量只能在标准模块中声明。 object \ UserForm \ Class,它们不允许在其中进行全局变量声明。
如果项目范围访问要求,请始终声明Global
。
另一件事是 Option Explicit
,如果您在代码中使用了它,而不是意外的输出/行为,那么您可能会收到错误Variable not defined
并且密码在
范围(“F1”)。值=计数器
这会使调试变得更容易。 :)
答案 1 :(得分:-1)
所以,我通过简单地在新的sub!之前调用函数来解决它!
Sub Test()
Call count()
Range("F1").Value = counter
end sub