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

时间:2017-08-05 04:01:45

标签: excel vba excel-vba

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

代码:

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

(所有变量都是全局变量) 当我尝试打印这些值时,没有打印值。 我不明白我哪里出错了? 如果你可以帮助我,那将是很有帮助的。 提前致谢。 :)

1 个答案:

答案 0 :(得分:2)

Public变量可以从代码的任何区域访问,而不仅仅是它们所定义的对象。这并不意味着当你想引用时,你不必指定它们所在的对象。例如,您在ThisWorkbook对象中包含的内容将被称为ThisWorkbook.count1等。为了避免使用相关对象限定变量,您可以创建变量Public在标准代码模块中。

我相信你要做的是如下:

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