我想在打开Excel文件时自动运行我的宏。
我想在打开Excel文件时自动运行我的宏。
我希望在打开Excel文件时自动运行这个私有子程序。
我尝试使用Private Sub Workbook_Open()方法,但由于第一个私有子程序没有名称,所以无法工作。
Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet: Set ws = Sheets("Budget- Reporting") If Range("W6").Value = 0 Then HideFG Else HideF End If End Sub Sub HideF() ' ' HideF 宏 ' ' For i = 1 To ActiveSheet.Shapes.Count ActiveSheet.Shapes(i).Visible = msoTrue Next i ActiveSheet.Shapes.Range(Array("F")).Visible = msoFalse Application.CommandBars("Selection").Visible = False End Sub Sub HideFG() ' ' HideFG 宏 ' ' For i = 1 To ActiveSheet.Shapes.Count ActiveSheet.Shapes(i).Visible = msoTrue Next i ActiveSheet.Shapes.Range(Array("FG")).Visible = msoFalse Application.CommandBars("Selection").Visible = False End Sub
我希望在打开Excel文件时自动检查单元格W16,并继续执行HideF宏或HideFG宏。目前,这两个宏在您打开文件后实际在单元格上键入时运行。
问题原因:想要在打开Excel文件时自动运行宏,但不清楚如何实现。
解决方法:最简单的方法是使用默认的模块"ThisWorkbook",该模块在打开Excel文件时会执行。可以在VBA项目资源管理器中找到它。只需将要执行的子程序复制到该空间即可。具体步骤可以在以下链接中找到详细说明:[https://support.office.com/en-us/article/automatically-run-a-macro-when-opening-a-workbook-1e55959b-e077-4c88-a696-c3017600db44](https://support.office.com/en-us/article/automatically-run-a-macro-when-opening-a-workbook-1e55959b-e077-4c88-a696-c3017600db44)。
如果有必要,可以使用以下代码来调用私有子程序:
Private Sub PrivateCallDemo() 'Module2 Application.Run "Module1.Worksheet_Change" End Sub
这样,实际的子程序可以保留在另一个模块中。
以上是解决方法,希望对您有帮助。请接受并投票支持有帮助的答案(我们都希望获得更多声望 😉 )。
问题的原因是使用了错误的事件触发器。正确的事件触发器应该是Workbook_Open(),而不是Worksheet_Change(ByVal Target As Range)。此外,代码应该存储在ThisWorkbook下,而不是单独的模块或工作表中。
以下是解决方案的代码示例:
Private Sub Workbook_Open() If Range("W6").Value = 0 Then HideFG Else HideF End If End Sub Sub HideF() MsgBox "HideF" End Sub Sub HideFG() MsgBox "HideFG" End Sub
此外,可以在以下链接找到更多帮助:https://support.office.com/en-us/article/automatically-run-a-macro-when-opening-a-workbook-1e55959b-e077-4c88-a696-c3017600db44
请记得投票/接受答案,以便其他人知道您的问题已解决,并帮助用户获得声望。