excel中的userform的全局工作表variables

我正在构build一个将数据添加到工作表的用户窗体。 我有一堆我的用户窗体的子例程,但我遇到问题访问我的工作表设置的variables。 它目前是一个局部variables(在一个子),并试图把它放在一个模块,如下所述: 工作表对象可以在Excel VBA中全局声明 。 我做了一些进一步的search,但没有得到我想要的结果。

我对VBA很陌生,一般来说编程是新手。 我已经使用了很多Excel,希望通过使用VBA创buildmacros等来做更多的事情。 这是我目前使用的代码:

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 

很明显,我不能从另一个子例程访问局部variables,所以我必须使全局“树”。 我创build了一个模块,并将Dimreplace为Public,将第二行代码放在Workbook_Open()中,然后尝试访问“trees”variables。 我得到一个“无效的外部过程”,并在我点击“Debug”时突出显示Workbook_Open()中的代码。

本质上,我只是想能够访问,比如说tree.Cells(5,6)从任何子,我不知道该怎么办。 有任何想法吗? 谢谢!

它必须是放置的问题…如果您打开VBA IDE并selectVBAProject中的ThisWorkbook项目。 双击该项目将其打开,在左上angular下拉菜单中select工作簿,在右上angular下拉菜单中select打开。 这将在ThisWorkbook对象中创build您的Workbook_Open Sub:

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

右键单击您的VBAProject并添加模块。 在这个模块中,你把全局variables:

 Public trees As Worksheet 

接下来你创build你的表单,把button,并双击button。 这将生成button事件:

在我的情况下:

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

现在,如果closuresExcel工作簿(首先保存代码和工作簿)并重新打开工作簿,Workbook_Open()将启动并设置工作表。 现在打电话给你的表单,然后点击button。 这将填补给定表中的两个单元格….