返回列表 上一主題 發帖

[發問] 有關巨集中迴圈的問題...

本帖最後由 GBKEE 於 2011-7-3 10:57 編輯

Dim B1, B2, B3 As Integer
上面的變數宣告中, B1, B2 的型態是 Variant, 只有B3 的型態是 Integer
http://forum.twbts.com/thread-4009-1-1.html

TOP

本帖最後由 GBKEE 於 2011-7-3 12:47 編輯

  • 回復 5# lincsn
    是這樣嗎?
    修改 oobird版主的程式如下
    1. Sub Lottery()
    2.     Dim B1%, B2%, B3%, ball%, m&, P$
    3.     Dim arr()
    4.     ball = 49
    5.     With ActiveSheet
    6.         P = Join(Array(.[D1].Text, .[D2].Text, [D3].Text), ",")  '三個數字"00"的格式字串
    7.         For B1 = 1 To ball - 2
    8.             For B2 = B1 + 1 To ball - 1
    9.                 For B3 = B2 + 1 To ball
    10.                     If InStr(P, Format(B1, "00")) Or InStr(P, Format(B2, "00")) Or InStr(P, Format(B3, "00")) Then
    11.                         m = m + 1
    12.                         ReDim Preserve arr(1 To 3, 1 To m)
    13.                         arr(1, m) = B1
    14.                         arr(2, m) = B2
    15.                         arr(3, m) = B3
    16.                     End If
    17.         Next B3, B2, B1
    18.         ActiveSheet.[a1].Resize(m, 3) = Application.Transpose(arr)
    19.     End With
    20. End Sub
    複製代碼

資料輸入工作表  系統須處裡
1樓的程序中每次迴圈中有將資料輸入工作表
ActiveSheet.Cells(Row, 1).Value = B1
ActiveSheet.Cells(Row, 2).Value = B2
ActiveSheet.Cells(Row, 3).Value = B3
系統須處裡三次

速度會加快 :
ActiveSheet.[a1].Resize(m, 3) = Application.Transpose(arr)  
一次將資料輸入工作表  系統只須處裡一次

TOP

回復 7# lincsn
  1. Sub Ex()
  2.     Dim R(), i%, P$
  3.     R = [D1:D49].Value
  4.     For i = 1 To UBound(R)
  5.         R(i, 1) = Format(R(i, 1), "00")
  6.     Next
  7.     P = Join(Application.Transpose(R), ",")
  8. End Sub
複製代碼

TOP

        靜思自在 : 發脾氣是短暫的發瘋。
返回列表 上一主題