我创建了一个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?
非常感谢
马特
答案 0 :(得分:1)
您始终可以使用注册表。它将来也可以用于许多其他事情。
SaveSetting "Your macro", "Values", "CurrentRow", currentRow
现在currentRow已保存在您的注册表中。
现在在PlanningUserForm
:
currentRow = GetSetting("Your macro", "Values", "CurrentRow")
您从注册表中获得了保存的值。
我对全局变量有不好的经历,这就是我建议注册表的原因。
答案 1 :(得分:1)
如果您已将currentRow
声明为公开,那么在PlanningUserForm
中,您可以currentRow
访问UserForm1.currentRow
值UserForm1
,其中Exception
是您拥有的用户形式声明currentRow为Public