为什么这个简单的赋值语句不工作(vba)?

由于我是vba脚本编程的新手,我无法弄清楚在这个简单的赋值语句中哪里出错了。 我已经在ThisWorkBook中初始化了我的variables,并尝试使用sheet1中的variables。

码:

Public count1 As Integer Public count2 As Integer Public count3 As Integer Public row13 As Integer Public srow8 As Integer Public erow8 As Integer Private Sub Workbook_Open() count1 = 18 count2 = 26 count3 = 26 Sheet1.setValues Sheet1.getValues End Sub Sub setValues() row13 = ThisWorkbook.count1 Debug.Print (row13) srow8 = ThisWorkbook.count2 erow8 = ThisWorkbook.count3 End Sub Sub getValues() Debug.Print ("row13") Debug.Print (row13) Debug.Print ("srow8") Debug.Print (srow8) Debug.Print ("erow8") Debug.Print (srow8) End Sub 

(所有variables都是全局的)当我尝试打印这些值时,没有打印值。 我不明白我哪里错了? 如果你能帮助我,这将是很大的帮助。 提前致谢。 🙂

Publicvariables可以从你的代码的任何区域访问,而不仅仅是它们被定义的对象。这并不意味着你不需要在你想引用它们的时候指定它们所在的对象,例如,您包括在您的ThisWorkbook对象中将被称为ThisWorkbook.count1等。为了避免使用相关对象限定variables,您可以使variablesPublic在一个标准的代码模块中。

我相信你所要做的是如下:

在您的ThisWorkbook代码模块中:

 Private Sub Workbook_Open() count1 = 18 count2 = 26 count3 = 26 Sheet1.setValues Sheet1.getValues End Sub 

在您的Sheet1代码模块中:

 Sub setValues() row13 = count1 Debug.Print row13 srow8 = count2 erow8 = count3 End Sub Sub getValues() Debug.Print "row13" Debug.Print row13 Debug.Print "srow8" Debug.Print srow8 Debug.Print "erow8" Debug.Print srow8 End Sub 

在通用代码模块(可能是Module1 )中:

 Public count1 As Integer Public count2 As Integer Public count3 As Integer Public row13 As Integer Public srow8 As Integer Public erow8 As Integer