真的很难与这一个。当用户离开特定工作表时,我试图将工作簿从设计模式中取出。我有一个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
刚刚上场,你可以尝试一下。
选择工作表时,将工作表的名称放在公共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
当变量被删除时,您需要将工作表名称放在隐藏工作表中。
没有经过全面测试,但应该提供帮助
谢谢。
这适合我;
CommandBars("Exit Design Mode").Controls(1).Execute 'Enter Design Mode
CommandBars("Exit Design Mode").Controls(1).Reset 'Exit Design Mode
我认为设计模式会关闭宏。