標題:
如何更改其他股號,要哪些步驟?
[打印本頁]
作者:
cfuxiong
時間:
2012-4-26 21:37
標題:
如何更改其他股號,要哪些步驟?
請教版大高手指點;謝謝~~
1.我在[匯入]欄,操作[資料]→[匯入外部資料]→[編輯查詢]→把[2303聯電]改成[2330台積電]→[記錄]欄卻不能更新成[2330台積電]Data,5分鐘後又還原[2303聯電]請問如何處置?更改其他股號,要哪些步驟?
2.範例:10秒更新資料=>Application.OnTime Now + TimeValue("00:00:10"), "MyDee" '設定 10秒後 執行 MyDee 程序
Exit Sub
要改成5分更新資料=>Application.OnTime Now + TimeValue("00:05:00"), "MyDee" '設定 5分後 執行 MyDee 程序
這樣對嗎?要如何存檔?
作者:
c_c_lai
時間:
2012-4-27 07:55
回復
1#
cfuxiong
那你為何不這麼做: 假設在你的 "匯入" 工作表單內的 P1 欄位輸入 -> "時段設定", P2 欄位輸入 -> "00:05:00",而將
Application.OnTime Now + TimeValue("00:00:10"), "MyDee" 修改成
Application.OnTime (Now + Sheets("匯入").Range("P2").Value), "ThisWorkBook.MyDee",如此,以後只要你不高興就到
P2 欄位來修改你高興的設定時段,那不就結了!
作者:
cfuxiong
時間:
2012-4-27 10:54
回復
2#
c_c_lai
謝謝c_c_lai的指導與幫忙,到目前為止,用《Application.OnTime Now + TimeValue("00:05:00"), "MyDee" '設定 5分後 執行 MyDee 程序》是OK
也試過你指導的方法,但卻出現”階段錯誤13”不知何處出錯?
現在是想要更改[股號]卻不知如何下手;
我在[匯入]欄,操作[資料]→[匯入外部資料]→[編輯查詢]→把[2303聯電]改成[2330台積電]→[記錄]欄卻不能更新成[2330台積電]Data,5分鐘後又還原[2303聯電]請問如何處置?更改其他股號,要哪些步驟?謝謝~~
作者:
c_c_lai
時間:
2012-4-27 11:10
本帖最後由 c_c_lai 於 2012-4-27 11:22 編輯
回復
3#
cfuxiong
請你先檢查一下
代號 = Sheets("紀錄").[C1]
等盤後我再看看,剛才一執行你的程式,就出現 400 的錯誤訊息,
結果連帶的我的作業程式竟然自動停止了我的DDE資料匯入!
作者:
Hsieh
時間:
2012-4-27 14:27
回復
3#
cfuxiong
會發現更改股號後又出現先前的股票資訊,有可能是時間差的關係,當前一個查詢尚未查詢結束(正在查詢中)
你更改了C1的股號這時觸發事件程序而執行更新,結果此次更新比前一次更新速度快,就貼到資料區,結果前一次更新接著完成
所以造成這樣現象,這與網路有關,你把紀錄工作表事件程序刪除後執行看看,應該就會消除這種現象
另提到5分鐘執行是改成Now + TimeValue("00:05:00")沒錯
Application.OnTime Now + TimeValue("00:05:00"), "MyDee" '設定 5分鐘後 執行 MyDee 程序
作者:
c_c_lai
時間:
2012-4-27 15:03
回復
3#
cfuxiong
' Sh.Activate ' *************
' Rng.Select ' *************
這兩處我將它改成註釋,因為它會將畫面不斷切到 "紀錄" 工作表單,
如果你是正在檢查 "匯入"工作表單時,設定時段一到畫面
便會被強制切到 "紀錄" 工作表單上,非常困擾!
' Application.OnTime Now + TimeValue("00:00:10"), "MyDee" 修改成
Application.OnTime (Now + Sheets("匯入").Range("P2").Value), "MyDee"
因為你的程式碼並不是放置在 ThisWorkBook 區塊內,所以 "ThisWorkBook.MyDee"
改成 "MyDee"。
[attach]10703[/attach]
[attach]10704[/attach]
作者:
cfuxiong
時間:
2012-4-27 15:03
回復
5#
Hsieh
謝謝Hsieh版大指導;
《你把紀錄工作表事件程序刪除後執行看看,應該就會消除這種現象》我作了以下動作;
1.打開檔案→[停用巨集]進入→在[匯入]欄,操作[資料]→[匯入外部資料]→[編輯查詢]→把[2303聯電]改成[2330台積電]=>畫面看來是OK→儲存→離開。
2.再打開檔案→[啟用巨集]進入→又還原啟始資料。
請版大高手指導…謝謝~~
作者:
Hsieh
時間:
2012-4-27 16:32
回復
7#
cfuxiong
並非更改查詢
因為你的條件已經在程式碼中使用紀錄工作表C1的值作條件
所以只要將紀錄工作表C1的值改成想要的代碼即可
作者:
cfuxiong
時間:
2012-4-27 18:45
回復
6#
c_c_lai
謝謝c_c_lai的指導與幫忙,非常滿意…再說聲謝謝~~
作者:
cfuxiong
時間:
2012-4-27 18:45
回復
8#
Hsieh
謝謝Hsieh版大細心指導;已OK了…謝謝~~
作者:
GBKEE
時間:
2012-4-27 21:05
本帖最後由 GBKEE 於 2012-4-27 21:09 編輯
回復
10#
cfuxiong
試試看
Option Explicit '在模組層次中強迫每個在模組�堛瘍僂くㄔ眸楨�確的宣告。
Dim Rng As Range
Private Sub AUTO_OPEN() '此巨集於檔案開啟時會自動執行
Sheets("紀錄").UsedRange.Offset(2).Clear '清除 前一日的數據
'*** Offset(1).Clear 改成 Offset(2).Clear '********
If Time < TimeValue("08:45") Then '早於開盤時間
Application.OnTime TimeValue("08:45"), "MyDee" '設定於08:45 執行 MyDee 程序
ElseIf Time >= TimeValue("08:45") And Time <= TimeValue("13:30") Then '於交易時間內
MyDee ' 執行 MyDee 程序
End If
End Sub
Private Sub MyDee()
Dim Sh As Worksheet, 代號 As String
If Time > TimeValue("13:30") Then Exit Sub ' 收盤時間後 停止執行
On Error Resume Next
Set Sh = Sheets("紀錄")
With Sh
代號 = .[C1]
.[C1].Select
.Activate
Application.ScreenUpdating = False
With Rng
.Interior.ColorIndex = xlNone
.Borders.LineStyle = xlLineStyleNone
End With
If Err <> 0 Then
Err.Clear
On Error GoTo 0
.UsedRange.Interior.ColorIndex = xlNone
.UsedRange.Borders.LineStyle = xlLineStyleNone
End If
End With
With Sheets("匯入").QueryTables(1)
.Connection = "URL;http://tw.stock.yahoo.com/q/q?s=" & 代號
.Refresh False
Application.EnableEvents = False
Set Rng = Sh.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, .ResultRange.Columns.Count - 1)
Rng.Value = .ResultRange.Rows(3).Value
With Rng
If .Row >= 20 Then
ActiveWindow.ScrollRow = .Row - 17
Else
ActiveWindow.ScrollRow = 3
End If
.Interior.ColorIndex = 4
.BorderAround xlContinuous, 2, 5
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
End With
Application.OnTime Now + TimeValue("00:00:10"), "MyDee" '設定 10秒後 執行 MyDee 程序
'10秒鐘: 輸入此格式 #00:00:10# 後VBA 自動生成 -> #12:00:10 AM#
'5分鐘: 輸入此格式 #00:05:00# 後VBA 自動生成 -> #12:05:00 AM#
'1小時: 輸入此格式 #1:00:00# 後VBA 自動生成 -> #1:00:00 AM#
'Application.OnTime Now + #12:00:10 AM#, "MyDee" '設定 10秒後 執行 MyDee 程序
'Application.OnTime Now + #12:05:00 AM#, "MyDee" '設定 5分鐘後 執行 MyDee 程序
'Application.OnTime Now + #1:00:00 AM#, "MyDee" '設定 1小時後 執行 MyDee 程序
Exit Sub
End Sub
複製代碼
作者:
cfuxiong
時間:
2012-4-27 22:14
回復
11#
GBKEE
GRKEE版大晚安;我是新手問題特別多;請問貼上VBA程式不知如何儲存~~~
我操作如下[工具]→[巨集] →[VB編輯器] →貼上VBA程式=>要如何儲存?
能否指導?謝謝~~
作者:
c_c_lai
時間:
2012-4-27 23:02
回復
12#
cfuxiong
回復
11#
GBKEE
我將 GBKEE 大大的程式 (稍加修飾) 放入 股票紀錄2, cfuxiong 老弟的放入到 股票紀錄1 中,最先的檔案當然是 股票紀錄 了。
前兩者都是將程式碼放置在 ThisWorkbook 程式區內執行的, 同時 C1 欄位異動的檢查程式碼也跟著修正 (原本是 "Module1.MyDee"),
' Sheet2 (紀錄) 的程式區域
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target(1).Cells = [C1] Then Run "ThisWorkbook.MyDee"
End Sub
複製代碼
願兩位有個愉快的周位夜晚!
[attach]10707[/attach]
[attach]10705[/attach]
[attach]10706[/attach]
作者:
GBKEE
時間:
2012-4-28 06:39
回復
12#
cfuxiong
隨這Excel 存檔就可以存檔 或 匯出存檔 其他 Excel 檔案 可匯入使用
進入 VBA 視窗 還有一途徑
如圖
[attach]10708[/attach] [attach]10709[/attach]
作者:
c_c_lai
時間:
2012-4-28 07:23
回復
14#
GBKEE
請教您,代號 = .[C1] 的 [C1] 其本身在定義上指的是 Range 還是 Cells, 它們轉出值會是 Value 還是 Text?
當然在設定時,就已非常清楚該欄的屬性, 我要了解的是它在應用面上正確的使用。
譬如說之前提過的:如果該欄位是時間欄,但該欄 "A3" 儲存的是 "=TIME(LEFT(A2,LEN(A2)-4),MID(A2,LEN(A2)-3,2),RIGHT(A2,2))"
或是 A3 是 Web 直接匯入的時間,但該欄位格式並非 "時間",也許是 "自訂" 也說不定,那麼此時 時間 = .[A3],
所得到的值會是 0.604166667 還是 14:30 (假設當時時間為 02:30:00 PM)? 應該如何去做正確的宣告?
作者:
GBKEE
時間:
2012-4-28 10:34
本帖最後由 GBKEE 於 2012-4-28 10:37 編輯
回復
15#
c_c_lai
Option Explicit
Sub Ex()
'[xxx] 'xxx 為活頁簿的物件 或函數 但不可以是變數
MsgBox [max({5,100,9})]
[紀錄!B3] = 0.666
[紀錄!B3].NumberFormatLocal = "h:mm;@"
MsgBox [紀錄!B3] '傳回的是值 .Value
MsgBox [紀錄!B3].Text '傳回的傳回儲存格的格式
'Rng.Value = .ResultRange.Rows(3).Value
'Rng 第2個位置是 數值 將它設定 為時間格式
'Rng.Cells(2).NumberFormatLocal = "h:mm;@"
End Sub
複製代碼
作者:
c_c_lai
時間:
2012-4-28 11:02
本帖最後由 c_c_lai 於 2012-4-28 11:07 編輯
回復
16#
GBKEE
經測試終於體會了,早起的鳥兒真的有蟲吃!
Sub Ex()
' [xxx] 'xxx 為活頁簿的物件 或函數 但不可以是變數
' MsgBox [max({5,100,9})]
[工作表1!B3] = 0.666
[工作表1!B3].NumberFormatLocal = "h:mm;@"
MsgBox [工作表1!B3] '傳回的是值 .Value
0.666
MsgBox [工作表1!B3].Text '傳回的傳回儲存格的格式
15:59
[工作表1!B4] = [工作表1!B3] '帶入的是值 .Value
0.666
[工作表1!B5] = [工作表1!B3].Text '帶入的是儲存格的格式
15:59
'Rng.Value = .ResultRange.Rows(3).Value
'Rng 第2個位置是 數值 將它設定 為時間格式
'Rng.Cells(2).NumberFormatLocal = "h:mm;@"
End Sub
我將
MsgBox [max({5,100,9})]
Marked,發現好像無作用,
請問它有何作用?
作者:
GBKEE
時間:
2012-4-28 11:05
回復
17#
c_c_lai
取消註解 看看
是說明 [ ] 的用法
作者:
c_c_lai
時間:
2012-4-28 11:09
回復
18#
GBKEE
原來是取出其最大值。
作者:
cfuxiong
時間:
2012-4-28 16:50
回復
17#
c_c_lai
Mead版大c_c_lai版大;你們好;
感謝兩位先進反覆指導,讓新手練習、體會
再次向兩位說聲 "感激兩位先進"!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)