Board logo

標題: [發問] 迴圈速度問題 [打印本頁]

作者: spermbank    時間: 2013-4-14 17:41     標題: 迴圈速度問題

大家好:
     我想請問一下:我的迴圈必須跑很久,有沒有辦法提升迴圈速度
     我的程式是利用"代號比對"取上市損益、上櫃損益、上市合併損益、上櫃合併損益的基本每股盈餘併入首頁1的第三欄
     並且區別損益與合併損益顏色

    本來想用類似Range("BL" & i).Formula = "=IF(ISNA(VLOOKUP($A" & i & ",'X年'!$A$2:$E$" & x1 & ",4,FALSE)),0,VLOOKUP($A" & i & ",'X年'!$A$2:$E$" & x1 & ",4,FALSE))"  
    來寫程式速度應該比較快

    可是我除了併入數值,還要區別顏色
    所以不知道怎麼寫,所以想請一下大家如何提升速度,謝謝。
作者: GBKEE    時間: 2013-4-15 18:17

回復 1# spermbank
試試看
  1. Sub Ex()
  2.     Dim Rng(1 To 2) As Range, Sh As Worksheet
  3.     Sheets("首頁1").Range("C:C").Interior.ColorIndex = xlNone
  4.     Set Rng(1) = Sheets("首頁1").[a2]
  5.     Do While Rng(1) <> ""               '執行迴圈的條件: Sheets("首頁1").的A不是空格
  6.         For Each Sh In Sheets(Array("上市損益", "上櫃損益", "上市合併損益", "上櫃合併損益"))
  7.             Set Rng(2) = Sh.Range("A:A").Find(Rng(1).Value, LOOKAT:=xlWhole)  '工作表群組中A欄尋找
  8.             If Not Rng(2) Is Nothing Then
  9.                 With Rng(1).Offset(, 2)
  10.                     .Cells = Rng(2).Cells(1, "S")
  11.                     If Sh.Name = "上市損益" Or Sh.Name = "上市合併損益" Then
  12.                         .Interior.Color = vbMagenta
  13.                     Else
  14.                         .Interior.Color = vbCyan
  15.                     End If
  16.                 End With
  17.             End If
  18.         Next
  19.         Set Rng(1) = Rng(1).Offset(1)  'Sheets("首頁1").[a2]....下移
  20.     Loop
  21. End Sub
複製代碼

作者: spermbank    時間: 2013-4-16 19:59

回復 2# GBKEE


    謝謝大大




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