Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正常加载Excel应用程序_Excel_Vba - Fatal编程技术网

正常加载Excel应用程序

正常加载Excel应用程序,excel,vba,Excel,Vba,我有一个工作簿,其中工具栏、滚动条、公式栏、标题等都通过vba代码隐藏。问题是当我打开一个新工作簿时,所有隐藏的菜单仍然隐藏。如何在关闭或打开带有代码的工作簿时正常加载excel应用程序?谢谢大家! 下面是我用来隐藏上面提到的所有菜单的代码 Sub RemoveToolbars() On Error Resume Next With Application .DisplayFullScreen = True .CommandBa

我有一个工作簿,其中工具栏、滚动条、公式栏、标题等都通过vba代码隐藏。问题是当我打开一个新工作簿时,所有隐藏的菜单仍然隐藏。如何在关闭或打开带有代码的工作簿时正常加载excel应用程序?谢谢大家!

下面是我用来隐藏上面提到的所有菜单的代码

Sub RemoveToolbars()
    On Error Resume Next
        With Application
           .DisplayFullScreen = True
           .CommandBars("Full Screen").Visible = False
           .CommandBars("MyToolbar").Enabled = True
           .CommandBars("MyToolbar").Visible = True
           .CommandBars("Worksheet Menu Bar").Enabled = True
           .CommandBars("Formula Bar").Visible = False
           .WindowState = xlMaximized
        End With
    On Error GoTo 0
    
    With ActiveWindow
        .DisplayHorizontalScrollBar = False
        .DisplayVerticalScrollBar = True
        .DisplayWorkbookTabs = False
        .DisplayHeadings = False
    End With
    
End Sub

在关闭工作簿时,将此代码放入ThisWorkbook模块,尝试反转/重置正在使用RemoveToolbars执行的操作

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    On Error Resume Next
    With Application
        .DisplayFullScreen = False
        .CommandBars("Full Screen").Visible = True
        .CommandBars("MyToolbar").Enabled = False
        .CommandBars("MyToolbar").Visible = False
        .CommandBars("Worksheet Menu Bar").Enabled = False
        .CommandBars("Formula Bar").Visible = True
        .WindowState = xlNormal
    End With
    On Error GoTo 0

    With ActiveWindow
        .DisplayHorizontalScrollBar = True
        .DisplayVerticalScrollBar = False
        .DisplayWorkbookTabs = True
        .DisplayHeadings = True
    End With

End Sub

在关闭工作簿时,将此代码放入ThisWorkbook模块,尝试反转/重置正在使用RemoveToolbars执行的操作

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    On Error Resume Next
    With Application
        .DisplayFullScreen = False
        .CommandBars("Full Screen").Visible = True
        .CommandBars("MyToolbar").Enabled = False
        .CommandBars("MyToolbar").Visible = False
        .CommandBars("Worksheet Menu Bar").Enabled = False
        .CommandBars("Formula Bar").Visible = True
        .WindowState = xlNormal
    End With
    On Error GoTo 0

    With ActiveWindow
        .DisplayHorizontalScrollBar = True
        .DisplayVerticalScrollBar = False
        .DisplayWorkbookTabs = True
        .DisplayHeadings = True
    End With

End Sub

您最初的方法和关于反转它的答案迫使应用程序UI进入特定状态(全屏、滚动条、显示/隐藏指挥官等),然后返回到该状态的相反位置

这可能是也可能不是最初的情况

更干净的实现是强制应用程序UI进入特定状态(全屏、滚动条、显示/隐藏指挥官等),然后再次返回到其先前的状态

因此,更为深思熟虑的方法可以是:

  • 推送:获取所有要更改的内容的状态,并将其存储在某个位置(如变量、隐藏的工作表范围或更固定的位置)
  • 设置:强制更改所有要更改的内容的状态(就像您在原始帖子中所做的那样)
  • 恢复你改变的状态,回到原来的状态
  • 在这个阶段,您的代码只有步骤2

    您还可以考虑您想要引起步骤3的触发因素。是仅当工作簿关闭时,还是当用户将工作簿切换到其他工作簿时?从你的问题听起来,你可能两者都想要。这是可以做到的

    进一步考虑在更改之前检查每个状态。例如,如果要显示的工具栏尚未显示,则显示它。这意味着您的行不会不必要地执行以显示已显示的内容、隐藏已隐藏的内容等

    这三个步骤的实现可能有助于减少用户(包括未来的您)的烦恼


    如果您决定采用这种方法,请尝试一下,然后如果您需要特定的帮助,请发布您遇到的任何问题。

    您最初的方法和关于反转它的答案将迫使应用程序UI进入特定状态(全屏、滚动条、显示/隐藏指挥官等),然后返回到该状态的相反位置

    这可能是也可能不是最初的情况

    更干净的实现是强制应用程序UI进入特定状态(全屏、滚动条、显示/隐藏指挥官等),然后再次返回到其先前的状态

    因此,更为深思熟虑的方法可以是:

  • 推送:获取所有要更改的内容的状态,并将其存储在某个位置(如变量、隐藏的工作表范围或更固定的位置)
  • 设置:强制更改所有要更改的内容的状态(就像您在原始帖子中所做的那样)
  • 恢复你改变的状态,回到原来的状态
  • 在这个阶段,您的代码只有步骤2

    您还可以考虑您想要引起步骤3的触发因素。是仅当工作簿关闭时,还是当用户将工作簿切换到其他工作簿时?从你的问题听起来,你可能两者都想要。这是可以做到的

    进一步考虑在更改之前检查每个状态。例如,如果要显示的工具栏尚未显示,则显示它。这意味着您的行不会不必要地执行以显示已显示的内容、隐藏已隐藏的内容等

    这三个步骤的实现可能有助于减少用户(包括未来的您)的烦恼


    如果您决定采用这种方法,请尝试一下,然后如果您需要特定的帮助,请发布您遇到的任何问题。

    仍然不起作用。它如何不起作用?只有标题可见,但其余部分仍然隐藏。它也在全屏上。我发布的是一个快速修复程序,应该可以工作,但你真正应该做的是遵循@ed2的建议,在运行RemoveToolbar之前存储所有设置,并在BeforeClose事件中使用它们来恢复。是的。我正在努力。你的解决方案很有帮助。我发现它与其他代码冲突,这就是它不起作用的原因。非常感谢。仍然不工作它是如何不工作的?只有标题是可见的,但其余的仍然是隐藏的。它也在全屏上。我发布的是一个快速修复程序,应该可以工作,但你真正应该做的是遵循@ed2的建议,在运行RemoveToolbar之前存储所有设置,并在BeforeClose事件中使用它们来恢复。是的。我正在努力。你的解决方案很有帮助。我发现它与其他代码冲突,这就是它不起作用的原因。非常感谢。