【问题标题】:Excel Cell remains in edit mode after activating other Worksheet激活其他工作表后 Excel 单元格仍处于编辑模式
【发布时间】:2016-01-25 18:36:12
【问题描述】:

En Excel/VBA,当双击工作表 A 中的单元格时,我想显示一个用户窗体,然后激活工作表 B。
这可行,但是每当我编辑工作表 B 中的任何单元格时,工作表 A 中的单元格仍然会获得输入。

在工作表“A”中:

  Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    UserForm1.Show
    End sub

用户窗体取消按钮:

Private Sub CancelButton1_Click()
    UserForm1.Hide
    Worksheets("B").Activate
End Sub

在工作表 A 中,excel 打开一个用户窗体,我单击取消,它确实进入工作表 B。但是无论我在 B 中输入什么,都会进入 A。
作为解决方法,我需要手动转到 A,然后再去B。 我怎样才能避免这种变通? BeforeRightClicking 事件也会出现同样的问题,这似乎是由于激活是通过用户表单完成的。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您的代码似乎没问题。激活Sheet(B) 上的任何单元格,这将确保编辑Sheet (B) 中的单元格。使用Range("A1").Activate 或任何单元格。

    Private Sub CancelButton1_Click()
        Worksheets("B").Activate
        Range("A1").Activate
        UserForm1.Hide
    End Sub
    

    【讨论】:

    • 在其他代码末尾也使用UserForm1.Hide代码。
    • 默认情况下,用户表单占据焦点,逻辑流:但是,当表单为“模态”时,反之亦然——逻辑流跟随焦点——我怀疑@987654326 @ 命令充当“退出子”,这意味着永远不会执行 @Laurent 的 Worksheets("B").Activate 语句。
    • 在“隐藏”之后尝试带有测试消息的 MsgBox,然后是 Worksheets("B").Activate... 然后尝试将表单设置为非模态。您的代码有效,而且是非常好的代码,但是您可以通过解释为什么 Laurent 的初始尝试不起作用,而您的尝试... 来改进您的答案
    • 这就是为什么我建议使用UserForm1.Hide 代码和子结束。
    猜你喜欢
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 2014-06-17
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 2016-05-13
    相关资源
    最近更新 更多