0

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

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

提前致谢。

阿难

4

1 回答 1

2

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


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

1)VBE ( Visual Basic Editor )双击ThisWorkbookproject explorer粘贴此代码

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

现在,在电子表格上添加一个按钮,右键单击并分配调用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以及with中的代码

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 
于 2013-05-13T13:20:59.897 回答