在button的Excel中隐藏/取消隐藏单元格组

我有一组单元格B32到R32长度和B32到B51宽度。 我打算在开始打开表单时将这个块隐藏起来。 我已经把这个块命名为“分析”。

表格中有一个button。 当按下button时,我想取消隐藏该块。 我是Excel Vba的新手。 我想知道做这个操作的语法/代码。

提前致谢。

阿南达

你不能像MattCrum所提到的那样隐藏一个区域。
就我而言,你有三种select


现在,只要确保在Range 32:51有一些东西(数据不是空的单元格),并且您的主工作表被称为工作表Sheet1或在代码中更改Sheet1以适合您的工作表名称

1)在VBE ( Visual Basic Editor )双击project explorer VBE ( Visual Basic Editor ) ThisWorkbook并粘贴此代码

 Private Sub Workbook_Open() ThisWorkbook.Sheets("Sheet1").Rows(32 & ":" & 51).hidden = True End Sub 

右键单击文件夹ModulesInsert一个新Module ,然后粘贴此代码

 Sub unhide() ThisWorkbook.Sheets("Sheet1").Rows(32 & ":" & 51).hidden = False End Sub 

现在,在电子表格中添加一个button,右键单击并将macros名为unhide指定给它。

保存更改并将工作簿保存为* .xlsm文件

注意当您现在打开工作簿时,行32到51被隐藏。 点击button将取消隐藏它们。


2)您可以将字体颜色更改为白色以"hide"内容。

按照步骤1进行更换

 ThisWorkbook.Sheets("Sheet1").Rows(32 & ":" & 51).hidden = True 

有了这个

 ThisWorkbook.Sheets("Sheet1").Range("B32:R51").Font.Color = RGB(255, 255, 255) 

Moduleunhide子例程)中的代码

 ThisWorkbook.Sheets("Sheet1").Range("B32:R51").Font.Color = RGB(0, 0, 0) 

现在,除了"hiding" (改变)字体颜色,而不是隐藏行之外,所有的工作都与步骤1类似。 不是一个好方法,但如果它适合你,那么酷


3)按照第1步,用ThisWorkbookreplaceThisWorkbook下的代码

 Option Explicit Private Sub Workbook_Open() Application.ScreenUpdating = False Set ws = ThisWorkbook.Sheets("Sheet1") Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "hiddenSheet" Set hs = ThisWorkbook.Sheets(Worksheets.Count) hs.Visible = xlSheetHidden ws.Range("B32:R51").Select Selection.Copy With hs .Activate .Range("B32").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End With ws.Activate ws.Rows(32 & ":" & 51).Delete Application.ScreenUpdating = True End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Call deleteHidden(Worksheets.Count) End Sub 

Module1的代码一起使用

 Option Explicit Public ws As Worksheet, hs As Worksheet Sub unhide() With hs .Activate .Rows("32:51").Select Selection.Copy End With With ws .Activate .Rows("32:32").Select Selection.Insert Shift:=xlDown End With End Sub Sub deleteHidden(num&) Application.DisplayAlerts = False Worksheets(num).Delete Application.DisplayAlerts = True Set hs = Nothing End Sub