【问题标题】:Global worksheet variable for userform in excelexcel中用户窗体的全局工作表变量
【发布时间】:2016-08-16 18:27:45
【问题描述】:

我正在构建一个将数据添加到工作表的用户表单。我的用户表单有一堆子例程,但是在访问我设置到工作表的变量时遇到问题。它目前是一个局部变量(在子中),并已尝试将其放置在此处讨论的模块中:Can a worksheet object be declared globally in Excel VBA。我做了一些进一步的搜索,但没有完全得到我想要的结果。

我对 VBA 很陌生,对编程也很陌生。我已经使用了很多 Excel,并希望通过使用 VBA 创建宏等来做更多事情。这是我目前正在使用的代码:

sub savebutton_click()
    Dim trees As Worksheet
    Set trees = ThisWorkbook.Sheets("Sheet1")
    trees.Cells(1, 1) = Me.TextTreeName
    trees.Cells(1, 2) = Me.TextTreeType
End sub

显然我无法从另一个子例程访问局部变量,因此我必须将“树”设为全局变量。我创建了一个模块并将 Dim 替换为 Public,将第二行代码放在 Workbook_Open() 中,然后尝试访问“trees”变量。当我点击“调试”时,我得到一个“无效的外部程序”并突出显示 Workbook_Open() 中的代码。

基本上我只是希望能够从任何子系统访问,比如说,trees.Cells(5,6),我不知道还能用它做什么。有任何想法吗?谢谢!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    这一定是放置问题...如果您打开 VBA IDE 并选择 VBAProject 中的 ThisWorkbook 项。双击该项目将其打开,在左上方的下拉列表中选择工作簿,在右上方的下拉列表中选择打开。这将在 ThisWorkbook 对象中创建您的 Workbook_Open Sub:

    Private Sub Workbook_Open()
        Set trees = ThisWorkbook.Sheets("Sheet1")
    End Sub
    

    右键单击您的 VBAProject 并添加模块。在该模块中放置全局变量:

    Public trees As Worksheet
    

    接下来创建表单,将按钮放在上面并双击按钮。这将生成按钮事件:

    就我而言:

    Private Sub CommandButton1_Click()
         trees.Cells(1, 1) = Me.TextTreeName
         trees.Cells(1, 2) = Me.TextTreeType
    End Sub
    

    现在,如果您关闭 Excel 工作簿(先保存代码和工作簿)并重新打开工作簿,Workbook_Open() 将启动并设置工作表。现在调用您的表单,然后单击按钮。这将填充给定工作表上的两个单元格....

    【讨论】:

    • 感谢您的回复。奇怪的是,我从头开始做了你提到的所有事情(创建了一个测试文件),保存了所有内容并在关闭整个文件之前运行了用户框。我有一个错误。关闭工作簿并重新打开后,我运行代码没有任何问题。对我来说,这似乎很奇怪。无论如何,如果我理解正确,所有全局变量都在 Workbook_Open() 子中,对吗?因此,如果我要设置一个变量 mapleTree = trees.Cells(1, 9),我就可以从其他潜艇访问 mapleTree?再次感谢您的帮助!
    • 公共变量可以在任何模块以及任何工作表代码窗格中声明,并且声明语句必须在第一次出现 Sub 或 Function 之前放置在其顶部之外。一旦声明它们就可以从任何模块的任何 Sub/Func 访问,用于设置和检索目的。我要补充一点,如果您的变量必须仅在所有驻留在同一模块中的 Subs/Func 之间共享,那么在最顶部将它们声明为“模块级”变量(即Dim trees as Worksheet)会是一个更好的选择模块本身。
    猜你喜欢
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多