VBA全局variables

我有以下代码来处理电子表格VBAmacros上的用户表单:

Option Explicit Public saved_vocab As String Public saved_num As String Public saved_def As String Public saved_ex As String Private Sub Save_Click() Dim low As Integer Dim high As Integer Dim selected As Integer low = 1 high = Cells(1, 1).End(xlDown).Row Range(Cells(low, 1), Cells(high, 1)).Find(what:=vocab.Text, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate selected = ActiveCell.Row saved_vocb = Cells(selected, 1).Text saved_num = Cells(selected, 2).Text saved_def = Cells(selected, 3).Text saved_ex = Cells(selected, 4).Text Cells(selected, 1) = vocab.Text Cells(selected, 2) = num.Text Cells(selected, 3) = definition.Text Cells(selected, 4) = example.Text End Sub Private Sub undo_Click() Cells(selected, 1) = saved_vocab Cells(selected, 2) = saved_num Cells(selected, 3) = saved_def Cells(selected, 4) = saved_ex End Sub 

我想要做的是妥善保存信息保存_ ??? string值,以便我可以正确访问它,当我决定点击“撤消”button来执行第二个function。 但是,当我执行第二个function时,以前保存在保存的信息_? variables可能不在我们的处理variables范围的b / c中。 什么是最简单的方法来完成我想要做的事情? 在此先感谢您的build议。

我想你想把全局variables放在一个“正常”模块中,而不是一个工作表模块。

一眼看出, selected的variables是在undo_Click()子例程中声明的,它在undo_Click()子例程中使用。

selected的variables需要在子例程之外与其他全局variables(如saved_vocabsaved_num等)一起声明

 Option Explicit Public saved_vocab As String Public saved_num As String Public saved_def As String Public saved_ex As String Public selected As Integer 'declaration added 

然后删除Save_Click() selected的现有的declarion