单击隐藏表格吗?

时间:2018-10-29 22:01:34

标签: excel vba

我是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,我希望它在用户完成操作并单击退出按钮后重新隐藏该选项卡。

你能帮我吗?

2 个答案:

答案 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

希望对您有帮助。