Excel VBA Userform全局计数器

时间:2016-09-07 10:55:59

标签: excel vba excel-vba

我创建了一个VBA用户窗体,其目的是允许用户更新该工作簿中保存的记录。在初始化时,UserForm会在各种文本框中填充某些单元格值,然后要求用户在其他文本框中添加某些信息,然后单击“下一步”按钮。按钮,新信息将添加到数据表中,下一个条目将填充UserForm。

我目前通过保持当前行(currentRow)的计数和“'下一步”的计数实现此目的。单击按钮,currentRow = currentRow + 1.这很好。

我现在的问题是,如果特定单元格的值不同,我需要显示不同的UserForm,例如:

If Range(Cells(currentRow, 3).Address).Value = "Planning" Then
    PlanningUserForm.Show
Else
... rest of code ...

这很有效,但是一旦初始化了这个新的PlanningUserForm,我就很难维护计数器。我需要它来知道currentRow的当前值,以便它可以在其文本框中显示正确的单元格值。

我已将变量currentRow声明为Public,但它似乎并未将值转移到新的userform中。这可能吗?或者我是否要求过多的Excel?

非常感谢

马特

2 个答案:

答案 0 :(得分:1)

您始终可以使用注册表。它将来也可以用于许多其他事情。

SaveSetting "Your macro", "Values", "CurrentRow", currentRow

现在currentRow已保存在您的注册表中。

现在在PlanningUserForm

currentRow = GetSetting("Your macro", "Values", "CurrentRow")

您从注册表中获得了保存的值。

我对全局变量有不好的经历,这就是我建议注册表的原因。

答案 1 :(得分:1)

如果您已将currentRow声明为公开,那么在PlanningUserForm中,您可以currentRow访问UserForm1.currentRowUserForm1,其中Exception是您拥有的用户形式声明currentRow为Public