【发布时间】:2016-02-10 10:43:25
【问题描述】:
在这个问题上真的很挣扎。当用户离开特定工作表时,我试图将工作簿退出设计模式。 我有一个 co,它将通过按钮将工作表带入和退出设计模式。
现在我想在工作表激活/停用事件上触发这些。工作表激活正常,进入设计模式。
但是,VBA 存在从代码中脱离设计模式的问题。 我是不是错过了什么。还是有完全不同的方法来解决这个问题。
谢谢 D
Sub testEnter()
EnterExitDesignMode True
End Sub
Sub testExit()
EnterExitDesignMode False
End Sub
Sub EnterExitDesignMode(bEnter As Boolean)
Dim cbrs As CommandBars
Const sMsoName As String = "DesignMode"
Set cbrs = Application.CommandBars
If Not cbrs Is Nothing Then
If cbrs.GetEnabledMso(sMsoName) Then
If bEnter <> cbrs.GetPressedMso(sMsoName) Then
cbrs.ExecuteMso sMsoName
Stop
End If
End If
End If
End Sub
【问题讨论】:
-
因为一旦打开 DesignMode 就不会运行任何代码,您可能需要提醒用户在离开前关闭
DesignMode。例如,在打开它之前,制作一个消息框,提醒他们在离开工作表之前这样做。 -
除了@ScottHoltzman 提到的内容之外,您还可以在相应的工作表中放置一个表单控件并将
testExit宏分配给它。 -
在许多 PC 中,开发人员选项卡可能不可见,因此要求用户在设计模式下点击可能不是最佳选择。在这种情况下,要么按照我的建议添加表单控件,要么将代码粘贴到模块中并为其分配快捷键,以便用户可以通过按下该键退出设计模式。
-
希望避免任何用户输入,因为目标群体必须具备最低限度的 excel 技能。
标签: vba excel designmode