我是VBA的一个非常新的学习者,试图解密函数并构建一个交互式文件。在这里一位用户的帮助下(他一定会知道他是谁;)),我可以学到很多东西。
现在,我被困在一个荒谬的代码段上:当用户选择“返回起始页-时,我想1 /取消隐藏工作表,2 //转到该工作表并3 /重新隐藏工作表-按钮”。 所以我编写了这段代码:
Sub FRtoEN()
'
' FRtoEN Macro
' Emmène au Glossaire FR ==> EN
'
Sheets("synthèse_FR&EN").Visible = True
Sheets("Synthèse_FR&EN").Select
End Sub
,效果很好。但是我无法找出如何告诉VBA语言中的excel,我希望它在用户完成操作并单击退出按钮后重新隐藏该选项卡。
你能帮我吗?
答案 0 :(得分:3)
当您想要有一个按钮来首次显示隐藏的工作表时,然后再次单击同一按钮上的 时,Ferndiando的答案非常出色。
使一个按钮显示一个工作表,使另一个按钮隐藏同一工作表,请执行以下操作;
在第一个按钮中,您将使代码可见:
Sub FRtoEN()
'
' FRtoEN Macro
' Emmène au Glossaire FR ==> EN
'
Sheets("synthèse_FR&EN").Visible = True
Sheets("Synthèse_FR&EN").Activate
End Sub
在第二个将用户带回到“主页”的按钮中,您可以添加以下代码:
Sub StartPage()
Sheets("Start Page").Activate 'First go to Start page
Sheets("synthèse_FR&EN").Visible = False 'Then hide the sheet they currently visited, that makes the experience a little bit more "working in background"
End Sub
如果我假设您将此“返回首页按钮”用于几张纸,那么每次有人进入首页时,您也可以隐藏其他纸。
Sub StartPage()
Sheets("Start Page").Activate 'First go to Start page
Sheets("synthèse_FR&EN").Visible = False
Sheets("synthèse_FR&DE").Visible = False 'Example 1 - No matter which sheet you visit, it will hide this sheets.
Sheets("synthèse_FR&SP").Visible = False 'Example 2 - No matter which sheet you visit, it will hide this sheets.
End Sub
如果您希望代码在隐藏的工作表上执行操作,而它们仍对用户隐藏(例如,背景过滤/计算/复制数据等),这将为用户带来流畅的体验:
Sub StartPage()
Application.ScreenUpdating = False 'Turn of all visual updates the macro does. Macro works in background without showing every step visually in Excel.
Sheets("synthèse_FR&EN").Visible = True 'Unhide the sheet you want to work at.
'Do some filtering stuff // copy stuff
Sheets("synthèse_FR&EN").Visible = False 'Re-hide the sheet again.
Application.ScreenUpdating = False 'Turn ON all visual updates the macro does. Macro now works and shows every step visually in Excel.
End Sub
:)
答案 1 :(得分:2)
如果我理解您的问题,则可以使用以下代码:
Sub myButton()
'Hide and Show Sheet2 with same button
' you can change the sheet name as you prefer
If (Sheets("Sheet2").Visible) Then ' control if the sheet is visible
Sheets("Sheet2").Visible = False ' hide sheet2 because before was showed
Sheets("Sheet1").Select ' select sheet1
Else
Sheets("Sheet2").Visible = True ' show sheet2 because before was hidden
Sheets("Sheet2").Select 'select sheet2
End If
End Sub
希望对您有帮助。