台灣最大程式設計社群網站
線上人數
821
 
會員總數:242436
討論主題:187492
歡迎您免費加入會員
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
VBA越來越慢
價值 : 10 QP  點閱數:417 回應數:4

樓主

小橘子
門外漢
0 3
87 2
發送站內信

VBA越跑越慢,該怎樣改善?
看網路上有Set X = ...,後面要Set X = Nothing
關掉畫面更新 AppLication.ScreenUpdating=False

請問還有哪些應該要注意的?
先感謝各位大大了。

搜尋相關Tags的文章: [ VBA效率 ] ,
本篇文章發表於2017-09-25 00:44
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

iamaraymond
檢舉此回應
請問是否有自網路上下載資料,建立querytable呢?
就自己之前的個人經驗,當querytable不斷累積時也會降低速度
本篇文章回覆於2017-11-21 21:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

小橘子
檢舉此回應
以下為我的程式碼
.................
Private Sub CommandButton3_Click()
Application.ScreenUpdating = False
'daily_清除資料
Dim a As New DataObject, gx As String
a.GetFromClipboard
On Error Resume Next
gx = a.GetText
If Err.Number <> 0 Then
MsgBox "not finish!"
Exit Sub
End If
Err.Clear

Sheets("move").Select
ActiveSheet.Paste
Sheets("daily").Cells.Delete
Sheets("move").Cells.Copy Sheets("daily").Range("A1")
'自動擷取頁數,設定要跑幾筆資料,一頁約40列
Dim hm As Integer, i As Integer, area As String, arno As String
hm = Split(Sheets("daily").Range("O4"), "/")(1) * 40
'資料貼上後,將move工作表裡的資料刪掉,才不會越貼越亂
Sheets("move").Cells.Delete
'自動判斷台南或台北
If Split(Sheets("daily").Range("B7"), "~")(0) = "01" Then
arno = "1"
area = "TPC"
Else
arno = "2"
area = "TN"
End If
'daily_篩選類別、刪掉多餘的行
For i = hm To 1 Step -1
If Not (Sheets("daily").Range("E" & i) Like "銷*" Or Sheets("daily").Range("A" & i) = "合計") Then
If Not (Sheets("daily").Range("E" & i) Like "類*" And i < 40) Then
Sheets("daily").Rows(i).Delete shift:=xlUp
End If
End If
Next i
Sheets("daily").Range("M1:Q1").EntireColumn.Delete shift:=xlToLeft
Sheets("daily").Range("F1:H1").EntireColumn.Delete shift:=xlToLeft
Sheets("daily").Rows("1:2").Insert

With Sheets("daily")
.Range("A1:I1").Merge '標題跨欄置中
.Range("A1:I1") = "銷貨日報表(產品別)"
.Range("A1:I1").Font.Bold = True
.Range("A1:I1").HorizontalAlignment = xlCenter
.Range("A2") = "公 司 別:"
.Range("B2") = arno
.Range("B2").HorizontalAlignment = xlLeft
.Range("D2") = area
.Range("F2") = "銷貨日期:"

End With
'列印設定
With Sheets("daily").Cells
.RowHeight = 20
.ColumnWidth = 12.5
.Font.Size = 12
End With
With ActiveSheet.PageSetup
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperB5
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
End With
Application.ScreenUpdating = True
MsgBox "OK", , "cheer up!"
Sheets("button").Select
End Sub
本篇文章回覆於2017-11-22 20:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

iamaraymond
檢舉此回應
恩...看起來也沒有會讓Excel變慢的地方,或者有可能就是純粹資料越來越多吧?
本篇文章回覆於2017-11-27 21:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

小橘子
檢舉此回應
苦惱啊..謝謝您的回復喔^^
本篇文章回覆於2017-11-28 20:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.