• 5

請問EXCEL VBA迴圈寫法

snare wrote:
那是您忘了把5十 i...(恕刪)


Dear Snare大

小弟主程式改成這樣,測試沒問題了,謝謝您

Private Sub WorkBook_Open()

If Time > TimeValue("08:45:00") Then
Copy_Data
Else
Application.OnTime TimeValue("08:45:00"), "Copy_Data"
End If
RowCount = Application.WorksheetFunction.CountA(Range("a:a")) + 11 '從A15(11+4)開始

End Sub
L大您好,

不才的RTD上面也有複製資料的VBA,但是需要抓準時間點去啟動,啟動時間不易掌握。
因此複製了您在討論區上的VBA程式碼,可是卻無法運作。
不才將您的VBA主程式與副程式一併貼在模組上,或是分開貼在ThisWorkbook與Module1。EXCEL都顯示副程式的第二行錯誤(紅字)。如下:
2  Sub Copy_Data()

可否勞煩L大指點小弟一二,是在哪裡出了問題?不勝感激。

junten 拜
刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪刪
chenjunten wrote:
L大您好,

不才的RTD上面也有複製資料的VBA,但是需要抓準時間點去啟動,啟動時間不易掌握。
因此複製了您在討論區上的VBA程式碼,可是卻無法運作。
不才將您的VBA主程式與副程式一併貼在模組上,或是分開貼在ThisWorkbook與Module1。EXCEL都顯示副程式的第二行錯誤(紅字)。如下:
2  Sub Copy_Data()

可否勞煩L大指點小弟一二,是在哪裡出了問題?不勝感激。

junten 拜...(恕刪)


我最後的VBA寫法跟本篇討論的有出入,算是最簡化的寫法了

我也是VBA新手很且很久沒研究了,提供您我最後的VBA寫法

ThisWorkBook_Open(程式碼)

Private Sub WorkBook_Open()

For n = 0 To 18000 Step 5 '總跑檔時間18000秒,間隔5秒

Application.OnTime TimeSerial(8, 45, n), "Copy_Data" '指定8點45分開始跑檔(跑到13點45分台指期收盤)

Next

End Sub

Module1(程式碼)

Sub Copy_Data()

Sheets("RTD").Cells(4 + i, 1).Resize(1, 8).Value = Sheets("RTD").Cells(2, 1).Resize(1, 8).Value

'複製RTD Sheets第二行第一欄到第八欄的資料,從第四行第一欄開始複製貼上
'而第二行第一欄到第八欄的資料則是抓取我另一個sheets裡的資料欄位,會這樣做是為了方便及簡化VBA的寫法

i = i + 1

End Sub





若有需要我可以提供檔案給您研究,但我是跑元大RTD,您要有元大的帳號(證券期貨均可),才能跑元大的資料

不過RTD給小弟的感覺就跟絕大多數技術分析一樣,有時會覺得準,有時會覺得是落後指標,所以我還是回到量價跟MACD
感謝L大您無私分享,
不才也是運作元大RTD,只是一直找不到自動定時啟動的VBA。
您也了解,RTD是在輸入密碼以後就一併打開VBA,時間準確度不好拿捏。
感謝您提供的VBA,明天試著運作看看,不論成功與否都非常感謝。

junten 拜
chenjunten wrote:
不才也是運作元大RTD,只是一直找不到自動定時啟動的VBA。
您也了解,RTD是在輸入密碼以後就一併打開VBA,時間準確度不好拿捏。...(恕刪)


不用抓時間阿,我最後的寫法是只要時間到8:45:00時就會開始跑,然後跑5小時

若你是8:45:00以前開啟,它就會從8:45:00跑到13:45:00

若你是8:45:00之後才開啟,假設是9:00:00開啟好了,那麼它就會從9:00:00跑到14:00:00

light0935 wrote:
不用抓時間阿,我最...(恕刪)


是的,所以謝謝您。
現在正在調整您給的VBA內容,看看是否適用。既然是定時啟動,也只有明天才能知道結果。
謝謝您!

junten 拜
L 大您好,
盤中空檔時間,上來報告測試結果:

昨晚將Module1(程式碼)調整如下:

Sub Copy_Data()

Sheets(1).Cells(3 + i, 10).Resize(1, 3).Value = Sheets(1).Cells(8, 6).Resize(1, 3).Value

'複製 Sheets(1) 第8行第6欄到第8欄的資料(共3欄),從第3行第10欄開始複製貼上
'(此處為原作者:light0935敘述)而第二行第一欄到第八欄的資料則是抓取我另一個 sheets 裡的,會這樣做是為了方便及簡化 VBA 的寫法

i = i + 1

End Sub

--------------------------------


結果資料只在同一個位置裡變動,並不會往下複製。看了半天,不知道問題出在哪裡?
還請L大幫忙看看,謝謝!

juntwn 拜
請問你sheet的名稱是叫做1?還是sheets(1)?

若是1,則應該寫做

Sheets("1").Cells(3 + i, 10).Resize(1, 3).Value = Sheets("1").Cells(8, 6).Resize(1, 3).Value

我測試寫成這樣跑了沒問題

同理,若該sheet名稱叫做sheets(1),則應該寫做

Sheets("sheets(1)").Cells(3 + i, 10).Resize(1, 3).Value = Sheets("sheets(1)").Cells(8, 6).Resize(1, 3).Value

一樣測試過,沒問題



light0935 wrote:
請問你sheet的...(恕刪)


感謝L大您的指正,
這就去更動您所指點之處,有兩天的假期可以測試,週一就可以順利上陣運作。
再三感謝!
有結果後再上來報告。
謝謝!

junten 拜

  • 5
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?