標題:
[發問]
請問如何改善迴圈的執行速度呢?
[打印本頁]
作者:
mark15jill
時間:
2012-9-6 11:57
標題:
請問如何改善迴圈的執行速度呢?
因想設定 自動關閉空白的欄或列
但若以 以下程式 至少要跑 5分鐘(電腦爛><
想請教有哪些方法能改善.. 謝謝
例如下列程式碼
Sub 巨集3()
Application.ScreenUpdating = False '螢幕更新關
工作表4.Select
[A1:K14] = "999"
'表格=開啟
ssx = 256
ssy = 65535
For srx = 1 To ssx
If Cells(1, srx) = "" Then
Cells(1, srx).Select
Selection.Delete Shift:=xlUp
Selection.EntireColumn.Hidden = True 'True
End If
Next srx
For sry = 1 To ssy
If Cells(sry, 1) = "" Then
Cells(sry, 1).Select
Selection.Delete Shift:=xlUp
Selection.EntireRow.Hidden = True 'True
End If
Next sry
[A1].Select
End Sub
複製代碼
作者:
GBKEE
時間:
2012-9-6 16:57
回復
1#
mark15jill
這是你要的結果嗎?
Option Explicit
Sub Ex()
Application.ScreenUpdating = False '螢幕更新關
With 工作表4
.Select
.Cells.EntireRow.Hidden = False
.Cells.EntireColumn.Hidden = False
.[A1:K14] = "999"
On Error Resume Next '設定:有程式碼 不理會 繼續 往下執行程式
'如無空白的儲存格 會有錯誤
.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
.Rows(1).SpecialCells(xlCellTypeBlanks).EntireColumn.Hidden = True
.Range(.Cells(.Rows.Count, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(1)).EntireRow.Hidden = True
'A欄 最後一列(65536)往上 到 有資料列的下一列
.Range(.Cells(1, .Columns.Count), .Cells(1, .Columns.Count).End(xlToLeft).Offset(, 1)).EntireColumn.Hidden = True
'第一列 最後一欄(256) 往左 到 有資料欄的右一欄
.[A1].Select
End With
Application.ScreenUpdating = True '螢幕更新關
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/)