excel宏代码-隐藏空白行

本人根据工作需要,编写了以下的一段excel宏代码,用于隐藏当前工作簿中,所设置区域的隐藏空白行宏代码,仅供参考

Private Sub Workbook_Open()           '创建私有过程,当工作簿打开的时候,就开始执行
    On Error Resume Next              '设置遇到错误时,继续进行下一步
    Dim sheetcount  As Integer        '设置工作表统计变量,其数据类型为整型
    Dim i As Integer                  '设置循环变量i,作为循环每一个工作表的表数变量
    Dim sheetName As String           '设置表名变量为:sheetName
    Dim beginRow As String            '设置开始行变量,并为string型
    Dim beginCol As String            '设置开始列变量,并为string型
    Dim endRow   As String            '设置结束行变量,并为string型
    Dim endCol   As String            '设置结束列变量,并为string型
    Dim util As HiddenUtil            '设置util变量 引用 HiddenUtil
    Set util = New HiddenUtil         '设置util变量为一个新的对象
    Worksheets(1).Activate
    '激活第一个工作表,用于从第一个表开始统计
    sheetcount = Sheets.Count         '统计工作表的数量
    Debug.Print "工作表的数量为:" & sheetcount   '输出调试日志,工作表的数量
    For i = 1 To sheetcount          '设置循环,从第一个表开始到最后一个表
        Worksheets(i).Activate      '激活第i个工作表,为了后面获取表名
        sheetName = Worksheets(i).Name    '获得第i个表的表名,并且赋值给sheetName
        Debug.Print "输出第" & i & "表,其表名为:" & sheetName
        If InStr(sheetName, "装箱单") Then
            Debug.Print "符合装箱单的表名" & sheetName
            Call util.hiddenEmptyRows(sheetName, "D", "D", 13, 180)
        ElseIf InStr(sheetName, "发票") Then
            Debug.Print "符合发票的表名" & sheetName
            Call util.hiddenEmptyRows(sheetName, "B", "B", 16, 170)
        ElseIf InStr(sheetName, "报关单草稿") Then
            Debug.Print "符合报关单草单的表名" & sheetName
            Call util.hiddenEmptyRows(sheetName, "B", "B", 6, 160)
        End If
    Next
End Sub


        
    
Public Sub hiddenEmptyRows(sheetName As String, beginCol As String, endCol As String, beginRow As Integer, endRow As Integer)
    '设置公共子过程,子过程的名称为:hiddenEmptyRows  隐藏空白行
    '子过程,调用子过程的时候,需要调入参数:sheetName 表名,beginCol 开始列,endCol 结束列,beginRow 开始行,endRow 结束行;row表示行,col 表示列;
    On Error Resume Next   '设置程序出错的时候,其处理方式:若程序出错,继续执行;
    Sheets(sheetName).Activate  '第一步:激活要进行操作的工作表,此处使用sheetName变量,进行表名输入;
    Debug.Print "隐藏表:" & sheetName
    Dim emptyRow As Integer   '设置变量emptyNo 变量,作为空白行下标的标志;
    Dim emptyCol As Integer
    Call removePassword
    For Each Rng In Sheets(sheetName).Range(beginCol & beginRow & ":" & endCol & endRow)       '设置循环,循环的范围为,调用过程时,所传入的开始列、行和结束的列和行,之间的区域;
        If Rng = "" Then
            Debug.Print "rng的值为:" & Rng
            emptyRow = Rng.Row
            Debug.Print "空白行为" & emptyRow
                Range(beginCol & emptyRow).EntireRow.Hidden = True
        End If
    Next
     'Call addPassword
End Sub

'撤消工作表保护并取消密码'
Private Sub removePassword()
    ActiveSheet.Unprotect
End Sub
'保护工作表并设置密码
Private Sub addPassword()
    ActiveSheet.Protect
End Sub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值