场景
我有一个excel VBA用户窗体,其中有很多组合框,文本框,标签,复选框和按钮。当我单击某个按钮时,这些对象会将其位置更改为新位置。
我需要的
单击按钮时,我需要将所有这些移动回原始位置,而无需使用我之前使用的定位技术。有什么方法可以通过一个命令将所有对象移回原始位置?
我尝试过的事情
我尝试了userform_initialize
,但是它不起作用
答案 0 :(得分:3)
正如杰弗里·威尔(Jeffrey Weir)指出的那样;将原始位置放在Tag属性中
Private Sub UserForm_Initialize()
Dim ctrl As MSForms.Control
For Each ctrl In Me.Controls
ctrl.Tag = ctrl.Top & "|" & ctrl.Left
Next
End Sub
并返回到原始位置:
Private Sub CommandButton1_Click()
'button to go back, adjust name to your button
Dim ctrl As MSForms.Control
For Each ctrl In Me.Controls
ctrl.Top = Split(ctrl.Tag, "|")(0)
ctrl.Left = Split(ctrl.Tag, "|")(1)
Next
End Sub
答案 1 :(得分:0)
简短的答案是您不能轻易做到这一点。唯一可以“重置”最后一个动作的内置Excel方法是Application.Undo
。来自MSDN documentation:
此方法仅撤消用户之前执行的最后操作 运行宏,它必须是宏的第一行。它 不能用于撤消Visual Basic命令。