当基于UserForm选择单元格时会出现问题,该用户窗体由分配给工作表上的窗体控件(按钮)的宏调用 .
选择工作表和单元格后,数据不会在所选单元格中输入(最初),并且在选择不同单元格时会消失(Tab,Return,箭头键),鼠标在不同单元格中单击会停止效果 .
要重现您需要的问题:
-
一张2张工作簿(我的名字分别为:Book1,Sheet1和Sheet2)
-
Sheet1上的表单控件按钮
-
带有命令按钮的用户表单(UserForm1和CommandButton1)
-
A模块(Module1)
Module1应包含以下内容:
Sub ShowForm()
UserForm1.Show
End Sub
UserForm1应包含以下内容:
Private Sub CommandButton1_Click()
With ThisWorkbook.Worksheets(2)
.Activate
.Cells(5, 5).Select
End With
Unload Me
End Sub
将ShowForm宏指定给sheet1上的Form控件按钮 .
单击sheet1上的按钮时,会发生以下情况 . 带按钮的表单将显示 . 如果单击表单上的按钮,则激活Sheet2并选择单元格E5并卸载表单 .
如果此时您尝试输入似乎被选中的sheet2单元格E5,您可能会注意到文本出现在sheet1上最后选择的单元格中,并在使用Tab键,Enter键,箭头键选择另一个单元格时消失(再次鼠标单击以选择另一个单元格,而光标在前一个单元格中停止效果) . 此外,如果您随后在Sheet2上选择不同的单元格,则在选择其他单元格时文本将消失 . 此效果将持续到手动选择不同的纸张 . 您会注意到您在sheet2上输入的数据实际上是在sheet1中 .
如果从宏列表中运行ShowForm宏,您可以在功能区上的开发人员选项卡上的宏按钮下找到该宏,则不会出现上述问题 .
此外,如果您在Sheet1上放置ActiveX CommandButton并将下面的代码添加到按钮,也没有问题 .
Private Sub CommandButton1_Click()
call ShowForm
End Sub
为什么代码适用于ActiveX控件,而不适用于Form控件?
我在Windows 8.1 64位上使用Excel 2013 32bit .
我已升级到Excel 2016,问题仍然存在 .
1 回答
我不知道问题是否已解决,但您可以尝试
screenupdating=False
: