返回列表 上一主題 發帖

[發問] 大家好 , 請教關於DDE自動換行與一些問題

回復 6# GBKEE


哇 ~ 感謝 GBKK 超級版主 >~<
可以用了..超強的 ^"^
不過不知道為什麼這份 Excel 速度變得很慢(開啟關閉儲存都變很慢,新增一行時也變慢)
太厲害了! :D
小妹在此向各位大大求教了 Orz

TOP

回復 10# saleen
其實 GBKEE 版大他已經給妳了正確的答案,唯一不同的處理
他是從資料錄最後往上遞增,但是妳要求資料須皆由 A2 行遞增
(插行), 所以我稍稍就地取材改了寫入點:
  1. Sub updateFollow()
  2.     Dim Rng As Range
  3.    
  4.     On Error Resume Next
  5.      If (TimeValue(Now) < TimeValue("08:45:00") Or TimeValue(Now) > TimeValue("13:45:00")) Then Exit Sub

  6.     With 工作表1
  7.         .Range("A2:L2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove        '  插入資料,原本資料列均下移一行。
  8.         '  Set Rng = .[A2]
  9.         '  Rng = Sheet1.[c2]
  10.         '  Rng.Offset(, 1) = "=XQTISC|Quote!'FITX06.TF-Time'"
  11.         '  Rng.Offset(, 2) = "=R2-Q2"
  12.         '  Rng.Offset(, 3) = "=X2-W2"
  13.         '  Rng.Offset(, 4) = "=T2-U2"
  14.         '  Rng.Offset(, 5) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
  15.         '  Rng.Offset(, 6) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
  16.         '  Rng.Offset(, 7) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
  17.         '  Rng.Offset(, 8) = "=Y2"
  18.         '  Rng.Offset(, 9) = "=Z2"
  19.         '  Rng.Offset(, 10) = "=Z2-Q5"
  20.         '  Rng.Offset(, 11) = "= AA2 - AB2"
  21.         '  Rng.Offset(, 12) = "=AD2"
  22.         '  上面之敘述表達與下列的敘述結果是一樣的,差異只在於使用語法之巧妙不同。
  23.         Set Rng = .[A2].Resize(1, 12)
  24.         Rng(1) = "=XQTISC|Quote!'FITX06.TF-Time'"
  25.         Rng(2) = "=R2-Q2"
  26.         Rng(3) = "=X2-W2"
  27.         Rng(4) = "=T2-U2"
  28.         Rng(5) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
  29.         Rng(6) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
  30.         Rng(7) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
  31.         Rng(8) = "=Y2"
  32.         Rng(9) = "=Z2"
  33.         Rng(10) = "=Z2-Q5"
  34.         Rng(11) = "= AA2 - AB2"
  35.         Rng(12) = "=AD2"
  36.         Rng.Value = Rng.Value              '  將公式以欄值取代
  37.         Rng(1).NumberFormat = "hh:mm:ss"
  38.     End With
  39.     If timerEnabled Then Call timerStart
  40. End Sub
複製代碼
但是 請自行取消 {A1:L1] 間的下拉篩選,否則將無法  "插入" 資料列。

TOP

回復 12# c_c_lai

^^~感謝 c_c_lai 大大 !
我現在馬上去試試看 ~~
不過不知道我只是要把表格上色為什麼就跑出下拉選單來了
只好想辦法把它拿掉 ><
小妹在此向各位大大求教了 Orz

TOP

回復 12# c_c_lai


太強了 ! 感謝 c_c_lai 大大 >~~<
超級成功耶 !
雖然看不太懂      
Rng(5) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
Rng(6) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
Rng(7) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"

這三行究竟是什麼意思 D:
都沒參照 rng 2 3 4 怎麼算出來差值的  囧
小妹在此向各位大大求教了 Orz

TOP

回復  c_c_lai


太強了 ! 感謝 c_c_lai 大大 >~~<
超級成功耶 !
雖然看不太懂      
Rng(5) = "=IF ...
saleen 發表於 2013-6-6 11:17

.Range("A2:L2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
在 A2 到 L2 間插入一資料列 (只異動 A ~ L 欄之位置;M ~ 以後之內容均保持不變),原本資料列均下移一行後,
Rng 設定於 A2 列  (Set Rng = .[A2].Resize(1, 12)), 所以此時:
E = 累委賣比五分變量   ("=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],"""")") (=IF(ISNUMBER(B3),B2-B3,"")) B2(當根)-B3(前跟)
F = 累賣成比五分變量   ("=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],"""")") (=IF(ISNUMBER(C3),C2-C3,"")) C2(當根)-C3(前跟)
G = 累委買口五分變量   ("=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],"""")") (=IF(ISNUMBER(D3),D2-D3,"")) D2(當根)-D3(前跟)
以 E 欄為例: 目前在第二行上 E2 欄位置; E 的往前三欄 (D、C、B) 位置即為 B2 欄,同理、B2 欄往下一行 [1] 不就是 B3 欄嗎?
再以 F 欄為例: 目前在第二行上 F2 欄位置; F 的往前三欄 (E、D、C) 位置即為 C2 欄,同理、C2 欄往下一行 [1] 不就是 C3 欄嗎?
以此類推。

TOP

回復 15# c_c_lai


    哦哦 ! 原來如此 ! 是往前算三行的意思 !
請教 c_c_lai 大像這些程式碼要如何學習 ?
有專門整本都是程式碼的書推薦嗎 ?

另像是 .Range("A2:L2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 這段
我想把它改寫成 即時資料在最上面一行
然後每五分鐘由第三行起算往下加一行
我寫成  .Range("A3:L3").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
這樣對嗎 ?
因為現在這樣最新的即時資料會被擠到下面 ><
好像有點困難...
小妹在此向各位大大求教了 Orz

TOP

回復 16# saleen
是這樣嗎?
  1. Sub updateFollow()
  2.     Dim Rng As Range
  3.    
  4.     On Error Resume Next
  5.     ' If (TimeValue(Now) < TimeValue("08:45:00") Or TimeValue(Now) > TimeValue("13:45:00")) Then Exit Sub

  6.     With 工作表1
  7.         .Range("A3:L3").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove        '  插入資料,原本資料列均下移一行。
  8.         '  Set Rng = .[A3]
  9.         '  Rng.Offset(, 1) = "=XQTISC|Quote!'FITX06.TF-Time'"
  10.         '  Rng.Offset(, 2) = "=R2-Q2"
  11.         '  Rng.Offset(, 3) = "=X2-W2"
  12.         '  Rng.Offset(, 4) = "=T2-U2"
  13.         '  Rng.Offset(, 5) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
  14.         '  Rng.Offset(, 6) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
  15.         '  Rng.Offset(, 7) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
  16.         '  Rng.Offset(, 8) = "=Y2"
  17.         '  Rng.Offset(, 9) = "=Z2"
  18.         '  Rng.Offset(, 10) = "=Z2-Q5"
  19.         '  Rng.Offset(, 11) = "= AA2 - AB2"
  20.         '  Rng.Offset(, 12) = "=AD2"
  21.         '  上面之敘述表達與下列的敘述結果是一樣的,差異只在於使用語法之巧妙不同。
  22.         Set Rng = .[A3].Resize(1, 12)
  23.         Rng(1) = "=XQTISC|Quote!'FITX06.TF-Time'"
  24.         Rng(2) = "=R2-Q2"
  25.         Rng(3) = "=X2-W2"
  26.         Rng(4) = "=T2-U2"
  27.         Rng(5) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
  28.         Rng(6) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
  29.         Rng(7) = "=IF(ISNUMBER(R[1]C[-3]),RC[-3]-R[1]C[-3],0)"
  30.         Rng(8) = "=Y2"
  31.         Rng(9) = "=Z2"
  32.         Rng(10) = "=Z2-Q5"
  33.         Rng(11) = "= AA2 - AB2"
  34.         Rng(12) = "=AD2"
  35.         Rng.Value = Rng.Value              '  將公式以欄值取代
  36.         Rng(1).NumberFormat = "hh:mm:ss"
  37.     End With
  38.     If timerEnabled Then Call timerStart
  39. End Sub
複製代碼
第二行就隨妳自由擺佈了 (因為成為未使用的空行了)。

TOP

回復 17# c_c_lai


完全成功耶 !
感謝 c_c_lai 大大 !
原來我是 a3 那邊沒改到..
^^
接下來要試著抓電子金融傳產的成交比重
c_c_lai 大可否建議一個方向小妹該從何著手 ><
小妹在此向各位大大求教了 Orz

TOP

回復  c_c_lai


完全成功耶 !
感謝 c_c_lai 大大 !
原來我是 a3 那邊沒改到..
^^
接下來要試著抓 ...
saleen 發表於 2013-6-6 12:56

有關電子金融傳產的成交比重方面,
妳可能就要去請教諸位版大與其他先進了!

TOP

回復 19# c_c_lai


好滴
感謝 c_c_lai 大大啦 !
小妹以後一定還會有許多 Excel 跟 VB 的相關問題要請教大大 :D
小妹在此向各位大大求教了 Orz

TOP

        靜思自在 : 時時好心就是時時好日。
返回列表 上一主題