gpt4 book ai didi

vba - 在工作表选择上激活/停用设计模式

转载 作者:行者123 更新时间:2023-12-02 12:13:49 30 4
gpt4 key购买 nike

真的很挣扎这个。当用户离开特定工作表时,我试图将工作簿退出设计模式。我有一个 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

最佳答案

刚刚玩过,你可以试试这个。

选择工作表时,将工作表的名称放入公共(public)变量中,然后启动一个应用程序。ontime 每秒检查事件工作表名称是否与此变量不同,如果是,则 ontime 调用将关闭设计模式,如果没有,则保留设计模式(您现有的代码)。刚刚在 VB IDE 中的设计中和功能区上的设计中尝试了一个快速演示,看起来它会起作用。

干杯。

类似于

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

当变量被删除时,您需要将工作表名称放入隐藏工作表中。

尚未完全测试,但应该有所帮助。

谢谢。

关于vba - 在工作表选择上激活/停用设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33615019/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com