Excel在

时间:2015-12-18 23:59:36

标签: excel-vba userform vba excel

基于UserForm选择单元格时会出现问题,该UserForm由分配给工作表上的Form控件(Button)的宏调用。

选择工作表和单元格后,数据不会在所选单元格中输入(最初),当选择了不同的单元格时,数据会消失(Tab,Return,箭头键),鼠标在另一个单元格中单击会停止效果。 / p>

要重现您需要的问题:

  • 一张2张工作簿(我的名字分别为:Book1,Sheet1和Sheet2)
  • Sheet1上的表单控件按钮
  • 带有命令按钮(UserForm1和CommandButton1)的用户表单
  • 模块(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键选择另一个单元格时消失。 ,箭头键(再次鼠标单击以选择另一个单元格,而光标在上一个单元格中停止效果)。此外,如果您随后在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 个答案:

答案 0 :(得分:0)

我不知道问题是否已解决,但您可以尝试这样screenupdating=False

Private Sub CommandButton1_Click()
    With ThisWorkbook.Worksheets(2)
        .Activate
        .Cells(5, 5).Select
    End With
    Unload Me
    Application.ScreenUpdating = False
End Sub