返回列表 上一主題 發帖

如何更改其他股號,要哪些步驟?

本帖最後由 GBKEE 於 2012-4-27 21:09 編輯

回復 10# cfuxiong
試試看
  1. Option Explicit             '在模組層次中強迫每個在模組裏的變數都必須明確的宣告。
  2. Dim Rng As Range
  3. Private Sub AUTO_OPEN()     '此巨集於檔案開啟時會自動執行
  4.     Sheets("紀錄").UsedRange.Offset(2).Clear                '清除 前一日的數據
  5. '***   Offset(1).Clear  改成   Offset(2).Clear    '********
  6.     If Time < TimeValue("08:45") Then             '早於開盤時間
  7.         Application.OnTime TimeValue("08:45"), "MyDee"    '設定於08:45 執行 MyDee 程序
  8.     ElseIf Time >= TimeValue("08:45") And Time <= TimeValue("13:30") Then '於交易時間內
  9.         MyDee                                     ' 執行 MyDee 程序
  10.     End If
  11. End Sub
  12. Private Sub MyDee()
  13.     Dim Sh As Worksheet, 代號 As String
  14.     If Time > TimeValue("13:30") Then Exit Sub     ' 收盤時間後 停止執行
  15.    On Error Resume Next
  16.    Set Sh = Sheets("紀錄")
  17.     With Sh
  18.         代號 = .[C1]
  19.         .[C1].Select
  20.         .Activate
  21.         Application.ScreenUpdating = False
  22.         With Rng
  23.             .Interior.ColorIndex = xlNone
  24.             .Borders.LineStyle = xlLineStyleNone
  25.         End With
  26.         If Err <> 0 Then
  27.             Err.Clear
  28.             On Error GoTo 0
  29.             .UsedRange.Interior.ColorIndex = xlNone
  30.             .UsedRange.Borders.LineStyle = xlLineStyleNone
  31.         End If
  32.     End With
  33.     With Sheets("匯入").QueryTables(1)
  34.         .Connection = "URL;http://tw.stock.yahoo.com/q/q?s=" & 代號
  35.        .Refresh False
  36.         Application.EnableEvents = False
  37.         Set Rng = Sh.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, .ResultRange.Columns.Count - 1)
  38.         Rng.Value = .ResultRange.Rows(3).Value
  39.         With Rng
  40.             If .Row >= 20 Then
  41.                 ActiveWindow.ScrollRow = .Row - 17
  42.             Else
  43.               ActiveWindow.ScrollRow = 3
  44.             End If
  45.             .Interior.ColorIndex = 4
  46.             .BorderAround xlContinuous, 2, 5
  47.         End With
  48.         Application.EnableEvents = True
  49.         Application.ScreenUpdating = True
  50.     End With
  51.      Application.OnTime Now + TimeValue("00:00:10"), "MyDee" '設定 10秒後 執行 MyDee 程序
  52.    
  53.    '10秒鐘: 輸入此格式  #00:00:10# 後VBA 自動生成   ->  #12:00:10 AM#
  54.    '5分鐘:  輸入此格式  #00:05:00# 後VBA 自動生成   ->  #12:05:00 AM#
  55.    '1小時:  輸入此格式  #1:00:00#  後VBA 自動生成   ->  #1:00:00 AM#
  56.    
  57.     'Application.OnTime Now + #12:00:10 AM#, "MyDee" '設定 10秒後  執行 MyDee 程序
  58.     'Application.OnTime Now + #12:05:00 AM#, "MyDee" '設定 5分鐘後 執行 MyDee 程序
  59.     'Application.OnTime Now + #1:00:00 AM#, "MyDee"  '設定 1小時後 執行 MyDee 程序
  60.    
  61.     Exit Sub
  62. End Sub
複製代碼

TOP

回復 11# GBKEE
GRKEE版大晚安;我是新手問題特別多;請問貼上VBA程式不知如何儲存~~~
我操作如下[工具]→[巨集] →[VB編輯器] →貼上VBA程式=>要如何儲存?
能否指導?謝謝~~
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 12# cfuxiong
回復 11# GBKEE
我將 GBKEE 大大的程式 (稍加修飾) 放入 股票紀錄2, cfuxiong 老弟的放入到 股票紀錄1 中,最先的檔案當然是 股票紀錄 了。
前兩者都是將程式碼放置在 ThisWorkbook 程式區內執行的, 同時 C1 欄位異動的檢查程式碼也跟著修正 (原本是 "Module1.MyDee"),
  1. '   Sheet2 (紀錄)  的程式區域
  2. Option Explicit

  3. Private Sub Worksheet_Change(ByVal Target As Range)
  4.     If Target(1).Cells = [C1] Then Run "ThisWorkbook.MyDee"
  5. End Sub
複製代碼
願兩位有個愉快的周位夜晚!
股票紀錄.rar (12.55 KB)
股票紀錄1.rar (13.13 KB)
股票紀錄2.rar (11.43 KB)

TOP

回復 12# cfuxiong
隨這Excel 存檔就可以存檔 或 匯出存檔 其他 Excel 檔案 可匯入使用
進入 VBA  視窗 還有一途徑
如圖
                        

TOP

回復 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)? 應該如何去做正確的宣告?

TOP

本帖最後由 GBKEE 於 2012-4-28 10:37 編輯

回復 15# c_c_lai
  1. Option Explicit
  2. Sub Ex()
  3.      '[xxx]  'xxx 為活頁簿的物件 或函數  但不可以是變數
  4.     MsgBox [max({5,100,9})]
  5.    [紀錄!B3] = 0.666
  6.     [紀錄!B3].NumberFormatLocal = "h:mm;@"
  7.     MsgBox [紀錄!B3]          '傳回的是值   .Value
  8.     MsgBox [紀錄!B3].Text     '傳回的傳回儲存格的格式   

  9.       'Rng.Value = .ResultRange.Rows(3).Value
  10.     'Rng 第2個位置是 數值 將它設定 為時間格式
  11.     'Rng.Cells(2).NumberFormatLocal = "h:mm;@"
  12.    
  13. End Sub
複製代碼

TOP

本帖最後由 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,發現好像無作用,
請問它有何作用?

TOP

回復 17# c_c_lai
取消註解 看看
是說明 [    ]   的用法

TOP

回復 18# GBKEE
原來是取出其最大值。

TOP

回復 17# c_c_lai
Mead版大c_c_lai版大;你們好;
感謝兩位先進反覆指導,讓新手練習、體會
再次向兩位說聲 "感激兩位先進"!
50 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 欣賞別人就是莊嚴自己。
返回列表 上一主題