返回列表 上一主題 發帖

跨工作表自動隱藏空白列問題

回復 3# msmplay


Sheets(i).Rows("5:25").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden =true

i 未轉為[文字]型態, 是以 INDEX 處理工作表, 而不是工作表[名稱],
最簡單方法:
Sheets(i & "").Rows("5:25").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden =true

用原來的 CSTR( i)  也可!!!

TOP

  1. Sub 排序班別()
  2. Dim i As Integer
  3. For i = 1 To 31
  4.     With Sheets(i & "")
  5.         '排序
  6.         .[C5:AI16].Sort Key1:=.[D5], Order1:=xlAscending, Header:=xlNo, _
  7.                   OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  8.                   
  9.         '隱藏
  10.         On Error Resume Next '略過沒有空白格的錯誤
  11.         .[C5:C16].SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
  12.         On Error GoTo 0
  13.     End With
  14. Next i
  15. End Sub
複製代碼

TOP

本帖最後由 准提部林 於 2016-4-5 16:40 編輯

回復 9# msmplay

C欄有公式,不動它,利用AJ欄為輔助(注意:AJ欄不可為文字格式,須為〔通用格式〕) 

Sub 排序班別()
Dim i As Integer
Application.Calculation = xlCalculationManual '關閉自動重算, 加快速度
For i = 1 To 31
  With Sheets(i & "")
     .[AJ5:AJ16] = .[D5:D16].Value '將D欄公式值暫貼至AJ欄
  
     '排序(改以AJ欄為主)
     .[C5:AJ16].Sort Key1:=.[AJ5], Order1:=xlAscending, _
          Header:=xlNo, OrderCustom:=1, _
          MatchCase:=False, Orientation:=xlTopToBottom
  
     .[AJ5:AJ16] = .[C5:C16].Value '將C欄公式值暫貼至AJ欄
     On Error Resume Next '略過沒有空白格的錯誤
     .[AJ5:AJ16].SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True '隱藏
     On Error GoTo 0
  
     .[AJ5:AJ16].ClearContents '清除AJ欄
    End With
Next i
Application.Calculation = xlCalculationAutomatic '恢復自動重算
End Sub

TOP

        靜思自在 : 吃苦了苦、苦盡廿來,享福了福、福盡悲來。
返回列表 上一主題