Board logo

標題: 如何讓Excel在讀取轉錄即時報價時,還能自動翻頁! [打印本頁]

作者: oklin    時間: 2015-4-22 16:24     標題: 如何讓Excel在讀取轉錄即時報價時,還能自動翻頁!

我是個Excel VBA的菜鳥,這個VBA編碼是我用來測試期指的即時讀取用的,原本期望報價轉錄到畫面上的最後一列時,系統能自動往下翻頁或能往下新增保持有5列左右的空白列。請各位前輩賜教。
編碼如下:

Sub 讀取並轉錄期指()
    Dim I As Long
    Dim 上一次的總量 As Long, 即時總量 As Long
    Range("A2:C1000").Select
    Selection.ClearContents
    I = 1
    上一次總量 = 0
    With Sheets("即時報價")
     Do
     即時總量 = .Cells(4, 7)
     If 即時總量 <> 上一次的總量 Then
     I = I + 1
     Sheets("轉錄").Cells(I, 1) = .Cells(4, 4)
     Sheets("轉錄").Cells(I, 2) = .Cells(4, 6)
     Sheets("轉錄").Cells(I, 3) = .Cells(4, 7)
     End If
     上一次的總量 = 即時總量
     DoEvents
     Loop Until I = 100
     MsgBox "轉錄完成"
    End With
End Sub
作者: luhpro    時間: 2015-4-23 22:29

我是個Excel VBA的菜鳥,這個VBA編碼是我用來測試期指的即時讀取用的,原本期望報價轉錄到畫面上的最後一列 ...
oklin 發表於 2015-4-22 16:24

最簡單的方式是在
Sheets("轉錄").Cells(I, 3) = .Cells(4, 7)
底下加上一行 :
Sheets("轉錄").Cells(I+5, 1).select
不過會拖慢整體速度.

或者若你可以確定捲動規律,(轉錄幾行後要跳到哪一列)
那可以用 ActiveWindow.ScrollRow=標的列號
的指令直接捲動視窗到指定列號.
作者: oklin    時間: 2015-4-24 11:02

我試了您指導的兩種方式
結果第二種可以達成我的期望
經過幾次測試後,我發現在
Sheets("轉錄").Cells(I, 3) = .Cells(4, 7)
底下加上以下三行
If I > 20 Then
             ActiveWindow.ScrollRow = I - 20
End If
剛好可以在我的螢幕下方一直保持五行的空白列,新的資料則一直被往上推。
非常感謝大大。




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