使用Button隐藏/取消隐藏excel中的单元格组

时间:2013-05-13 08:54:48

标签: excel excel-vba excel-2010 vba

我有一组B32到R32长度和B32到B51宽度的单元格。我打算在打开工作表时将此块隐藏在开头。我已将此块命名为“分析”。

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

提前致谢。

阿南达

1 个答案:

答案 0 :(得分:2)

你不能隐藏像MattCrum所提到的那样的区域 就我而言,你有3个选择

<小时/> 现在,只需确保Range 32:51中有一些内容(数据 - 不是空单元格),您的主工作表在代码中被称为Sheet1或更改Sheet1以适合您的工作表名称

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

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

右键单击文件夹ModulesInsertModule,然后粘贴此代码

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

现在,在电子表格上添加一个按钮,右键单击并为其指定名为unhide的宏。

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

请注意,现在打开工作簿时,将隐藏第32行到第51行。单击该按钮将取消隐藏它们。

<小时/> 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,将ThisWorkbook下的代码替换为

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