Board logo

標題: 如何快速編輯大量儲存格 [打印本頁]

作者: 藍天麗池    時間: 2016-3-12 11:05     標題: 如何快速編輯大量儲存格

本帖最後由 藍天麗池 於 2016-3-12 11:10 編輯

[attach]23429[/attach]
請問大大,我接券商RTD的資料,我弄好後出現如上圖那樣,之後要在每個儲存格內按F2+Enter才有辦法連接到券商那邊,才會出現數字,但因為資料很多,要如何做才能執行大量且快速的編輯儲存格呢??

上圖有數字的部分是已經執行F2+Enter,公式部分是還沒有執行

Sub 巨集1()
'
' 巨集1 巨集
'

'
    ActiveCell.FormulaR1C1 = "=RTD(""money.excel"", ,2330,""BestBidVolume2"")"
    Range("E3").Select
    ActiveCell.FormulaR1C1 = "=RTD(""money.excel"", ,2317,""BestBidVolume2"")"
    Range("E4").Select
    ActiveCell.FormulaR1C1 = "=RTD(""money.excel"", ,6505,""BestBidVolume2"")"
    Range("E5").Select
    ActiveCell.FormulaR1C1 = "=RTD(""money.excel"", ,2412,""BestBidVolume2"")"
    Range("E6").Select
    ActiveCell.FormulaR1C1 = "=RTD(""money.excel"", ,1303,""BestBidVolume2"")"
    Range("E7").Select
    ActiveCell.FormulaR1C1 = "=RTD(""money.excel"", ,1301,""BestBidVolume2"")"
    Range("E8").Select
    ActiveCell.FormulaR1C1 = "=RTD(""money.excel"", ,2882,""BestBidVolume2"")"
    Range("E9").Select
    ActiveCell.FormulaR1C1 = "=RTD(""money.excel"", ,1326,""BestBidVolume2"")"
    Range("E10").Select
End Sub

上述程式碼是我用巨集錄製,目前是執行到E10,要如何簡化讓程式碼能夠執行到E900呢??
作者: Brandy    時間: 2016-3-12 11:23

回復 1# 藍天麗池
看來應該是元大的RTD,我的是開EXCEL前就要先打帳密,打完就可以連接了,我還是第一次聽到要F2+enter
你打開他的範例有需要這樣才有資料嗎?
作者: c_c_lai    時間: 2016-3-12 15:42

回復 1# 藍天麗池
附上一個範例,參考看看!
多年未接觸券商系統了,尚不知你的用意。
[attach]23431[/attach]
作者: 藍天麗池    時間: 2016-3-12 22:31

本帖最後由 藍天麗池 於 2016-3-12 22:33 編輯

回復 3# c_c_lai
[attach]23432[/attach]
[attach]23433[/attach]
因為代碼很多,所以我把它分段之後用"&"連起來,之後複製貼上值,我並非直接改股票代號,所以處理起來才會這樣
變成要編輯後他才會變成數字型態

請教一下C大,我上面說的那個要如何將程式碼簡化處理到E900??

如果C大還是不懂,可以先大概告訴我要如何簡化程式碼嗎??
作者: 藍天麗池    時間: 2016-3-12 22:34

回復 2# Brandy

我是因為有更改過
作者: c_c_lai    時間: 2016-3-13 08:15

本帖最後由 c_c_lai 於 2016-3-13 08:22 編輯

回復 4# 藍天麗池
RTD使用範例中:
A6 = Price
C3 = $TWT
=RTD("money.excel",,C$3,$A6)
有明確的單元內容可提供替換。
如此便可從 A欄中帶出公式應用:
  1. Sub Ex()
  2.     Dim rng As Range
  3.    
  4.     '  你可以利用 For Each ~ Next 一一將公式得出。
  5.     For Each rng In Range("A5", Range("A" & Rows.Count).End(xlUp))
  6.         '  Debug.Print rng.Address
  7.         '  假設公式要寫在 "O" 欄,即從 O5, O6, O7, ......., 到最後列。
  8.         rng.Offset(1, 14).Formula = "=RTD(""money.excel"",,C$3," & rng.Address & ")"
  9.     Next
  10. End Sub
複製代碼
而在你的範例裡:
2330, 2317, 6505, ....., 1326 (假設 執行到 E900, E900 是要帶入 1326)
試問這些代碼你要如何得知,換句話說代碼要根據哪裡才能一一求得?
無中生有?不能只有你自己知道代碼為何,程式它是無法無中生有。
作者: 藍天麗池    時間: 2016-3-13 09:03

回復 6# c_c_lai

C大我了解了,感謝
作者: 准提部林    時間: 2016-3-13 11:57

A欄放編號,其它不用,直接在E欄下公式:

Sub TEST()
With Range("E2:E" & [A65536].End(xlUp).Row)
   .Formula = "=""=RTD(""""money.excel"""", ,""&A2&"",""""BestAskVolume5"""")"""
   .Value = .Value
   '.Replace "=", "=", Lookat:=xlPart '如果還無法轉成DDE公式,再加這一行 
End With
End Sub
 
 
若其它欄位的公式參數或文字不相同,可上傳較詳細內容∼∼∼
 
作者: 藍天麗池    時間: 2016-3-21 09:45

回復 3# c_c_lai

http://forum.twbts.com/thread-16677-1-1.html
C大可以請你幫我看看嗎??




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