標題:
EXCEL+DDE
[打印本頁]
作者:
hmc667888
時間:
2011-7-24 23:04
標題:
EXCEL+DDE
大家好,
我想每天改變投資組合成份股,再把自動把股要代號結合成券商的DDE公式,這樣就不用逐一去修改,
請各位幫忙看能不能達成。謝謝。
股票名稱 收盤價 成交量 市價
1516
川飛 2.21 161 =DDEEXCEL|CSTOCK
1516
!市價
6192巨路 85.6 3,591 =DDEEXCEL|CSTOCK6192!市價
2910統領 31.7 233 =DDEEXCEL|CSTOCK2910!市價
2358美格 12 659 =DDEEXCEL|CSTOCK2358!市價
例如︰
1516川飛 D2=DDEEXCEL|CSTOCK1516!市價
A橺1516川飛包含股票代號和名稱,有些代號是6位數,名稱是2~3位中文字
作者:
GBKEE
時間:
2011-7-25 08:37
本帖最後由 GBKEE 於 2011-7-26 06:27 編輯
回復
1#
hmc667888
自訂函數
請將程式碼 貼於 一般模組 (Module1.)
Function 收盤價(股票 As Range)
Dim i As Integer
For i = 1 To Len(股票)
If Mid(股票, i, 1) Like "[!0-9]" Then
收盤價 = Application.Evaluate("DDEEXCEL|CSTOCK" & Mid(股票, 1, i - 1) & "!收盤價")
Exit Function
End If
Next
收盤價 = 股票 & " 沒有代號!!"
End Function
Function 成交量(股票 As Range)
Dim i As Integer
For i = 1 To Len(股票)
If Mid(股票, i, 1) Like "[!0-9]" Then
成交量 = Application.Evaluate("DDEEXCEL|CSTOCK" & Mid(股票, 1, i - 1) & "!成交量")
Exit Function
End If
Next
成交量 = 股票 & " 沒有代號!!"
End Function
Function 市價(股票 As Range)
Dim i As Integer
For i = 1 To Len(股票)
If Mid(股票, i, 1) Like "[!0-9]" Then
市價 = Application.Evaluate("DDEEXCEL|CSTOCK" & Mid(股票, 1, i - 1) & "!市價")
Exit Function
End If
Next
市價 = 股票 & " 沒有代號!!"
End Function
複製代碼
如圖可於工作表插入所寫的自訂函數.
[attach]7132[/attach]
作者:
hmc667888
時間:
2011-7-25 21:04
版主謝謝你。
結果都呈現#VALUE!,
另外"股票"的範圍要另外定義名稱或可以寫入程式。
作者:
GBKEE
時間:
2011-7-26 06:34
回復
3#
hmc667888
傳上你的檔案看看
作者:
hmc667888
時間:
2011-7-26 09:14
回復
4#
GBKEE
我先將"股票"定義名稱,並加入linkchange,
已經可以出來,但有點慢,也不太順,有没有可以改進的空間,還請大大幫忙。
"股票"定義名稱可以寫入VBA中嗎?
作者:
GBKEE
時間:
2011-7-26 10:07
回復
5#
hmc667888
但有點慢,也不太順
可能是檔案使用的函數計算量太大
可用巨集錄製是看看
Sub Macro1()
'
' Macro1 Macro
'
Range("A2:A16").Select
ActiveWorkbook.Names.Add Name:="股票", RefersToR1C1:="=sheet1!R2C1:R16C1"
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)