真的很难与这个人挣扎。当用户离开特定工作表时,我试图将工作簿从设计模式中取出。 我有一个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
答案 0 :(得分:0)
刚刚上场,你可以尝试一下。
选择工作表时,将工作表的名称放在公共var中,然后启动application.ontime以检查每一秒活动工作表名称是否与此var不同,如果是,则ontime调用关闭设计模式,如果没有,则保留设计模式(您现有的代码)。刚试过VB IDE中的设计快速演示和Ribbon上的In Design,看起来它会起作用。
干杯。
像
这样的东西Sub EnterExitDesignMode(bEnter As Boolean)
Dim cbrs As CommandBars
Const sMsoName As String = "DesignMode"
Application.OnTime Now + TimeSerial(0, 0, 1), "TIMER_TEST"
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
Public Sub TIMER_TEST()
If ActiveSheet.Name = strSheetName Then
EnterExitDesignMode True
Else
End If
End Sub
当变量被删除时,您需要将工作表名称放在隐藏的工作表中。
未经过全面测试,但应该提供帮助。
感谢。
答案 1 :(得分:0)
这对我有用;
CommandBars("Exit Design Mode").Controls(1).Execute 'Enter Design Mode
CommandBars("Exit Design Mode").Controls(1).Reset 'Exit Design Mode
答案 2 :(得分:-1)
我认为设计模式会关闭宏。