Board logo

標題: [發問] 請問如何改善迴圈的執行速度呢? [打印本頁]

作者: mark15jill    時間: 2012-9-6 11:57     標題: 請問如何改善迴圈的執行速度呢?

因想設定 自動關閉空白的欄或列
但若以 以下程式 至少要跑 5分鐘(電腦爛><
想請教有哪些方法能改善.. 謝謝
例如下列程式碼
  1. Sub 巨集3()
  2. Application.ScreenUpdating = False '螢幕更新關
  3.         工作表4.Select
  4.         [A1:K14] = "999"

  5.         '表格=開啟
  6.         ssx = 256
  7.         ssy = 65535

  8.         For srx = 1 To ssx
  9.             If Cells(1, srx) = "" Then
  10.                 Cells(1, srx).Select
  11.                 Selection.Delete Shift:=xlUp
  12.                 Selection.EntireColumn.Hidden = True 'True
  13.             End If
  14.         Next srx
  15.         For sry = 1 To ssy
  16.             If Cells(sry, 1) = "" Then
  17.                 Cells(sry, 1).Select
  18.                 Selection.Delete Shift:=xlUp
  19.                 Selection.EntireRow.Hidden = True 'True
  20.             End If
  21.         Next sry
  22.    
  23.    
  24.     [A1].Select
  25.         
  26.         
  27.         
  28. End Sub
複製代碼

作者: GBKEE    時間: 2012-9-6 16:57

回復 1# mark15jill
這是你要的結果嗎?
  1. Option Explicit
  2. Sub Ex()
  3.     Application.ScreenUpdating = False '螢幕更新關
  4.     With 工作表4
  5.         .Select
  6.         .Cells.EntireRow.Hidden = False
  7.         .Cells.EntireColumn.Hidden = False
  8.         .[A1:K14] = "999"
  9.         On Error Resume Next        '設定:有程式碼 不理會 繼續 往下執行程式
  10.         '如無空白的儲存格 會有錯誤
  11.         .Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
  12.         .Rows(1).SpecialCells(xlCellTypeBlanks).EntireColumn.Hidden = True
  13.         .Range(.Cells(.Rows.Count, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(1)).EntireRow.Hidden = True
  14.         'A欄    最後一列(65536)往上 到  有資料列的下一列
  15.         .Range(.Cells(1, .Columns.Count), .Cells(1, .Columns.Count).End(xlToLeft).Offset(, 1)).EntireColumn.Hidden = True
  16.         '第一列 最後一欄(256)  往左 到  有資料欄的右一欄
  17.         .[A1].Select
  18.     End With
  19.     Application.ScreenUpdating = True '螢幕更新關
  20. End Sub
複製代碼

作者: mark15jill    時間: 2012-9-11 10:07

回復 2# GBKEE

試驗成功
謝謝大大~

不過 有地方感覺疑問

range(.cells(XXXXXX)  ,  .cells(XXXXXX))

這邊之前有試驗過
可是 卻失敗
作者: stu1517    時間: 2012-9-28 23:01

好像不錯用  來試試新語法~




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)