本人根据工作需要,编写了以下的一段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