Excel 在通过表单中的代码选择后无法正确激活单元格

问题描述 投票:0回答:2

当基于用户窗体选择单元格时会出现此问题,该用户窗体由分配给工作表上的表单控件(按钮)的宏调用。

选择工作表和单元格后,数据不会输入到所选单元格中(最初),并且当选择不同的单元格(Tab、Return、箭头键)时数据会消失,鼠标单击不同的单元格会停止效果。

要重现您需要的问题:

  • 一个有 2 张纸的工作簿(我的分别命名为:Book1、Sheet1 和 Sheet2)
  • Sheet1 上的表单控制按钮
  • 带有命令按钮的用户表单(UserForm1 和 CommandButton1)
  • 一个模块(模块1)

模块1应包含以下内容:

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 上的表单控件按钮。

单击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 32 位。
我已经升级到 Excel 2016,问题仍然存在。

excel userform vba
2个回答
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

0
投票

使用此代码。我认为它有效。

Private Sub CommandButton1_Click()
    Sheets("Sheet2").Select
    ActiveSheet.Range("E5").Select
    Unload Me
    Application.ScreenUpdating = False
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.