Board logo

標題: [發問] 求各位幫幫小弟[關於更新股票圖ohlcchart] [打印本頁]

作者: clayton0403    時間: 2014-11-18 02:10     標題: 求各位幫幫小弟[關於更新股票圖ohlcchart]

本帖最後由 GBKEE 於 2014-11-18 14:04 編輯

本人在建立一個比較簡單的圖的excel
excel裡面已經有了user form。
小弟意念是: 有一個表有選項1,2,3
選擇後按ok,然後會自動轉到相關股票圖的那一頁
圖表亦會根據其資料庫更新
本人求sub create 1/2/3 chart()之間的 code
或者有大大能夠指出我VBA裡面的錯處
VBA亦隨文附上!不勝感激!
Option Explicit

Public analyopt As Integer
Sub main()

    frmselect.Show
    Select Case analyopt
        Case 1
            Call create1chart
        Case 2
            Call create2chart
        Case 3
            Call create3chart
    End Select
        
End Sub
Sub create1chart()
   
End Sub
Sub create2chart()

End Sub
Sub create3chart()

End Sub
[attach]19574[/attach][attach]19574[/attach]
作者: clayton0403    時間: 2014-11-18 11:59

有人可以幫幫忙嗎?謝謝喔!
作者: owen06    時間: 2014-11-18 12:12

試試看
  1. Option Explicit

  2. Public analyopt As Integer
  3. Sub main()

  4.     frmselect.Show
  5.     Select Case analyopt
  6.         Case 1
  7.             chart1.Select
  8.             Application.Calculation = xlAutomatic
  9.         Case 2
  10.             chart2.Select
  11.             Application.Calculation = xlAutomatic
  12.         Case 3
  13.             chart3.Select
  14.             Application.Calculation = xlAutomatic
  15.     End Select
  16.         
  17. End Sub
複製代碼

作者: clayton0403    時間: 2014-11-18 12:48

本帖最後由 clayton0403 於 2014-11-18 12:49 編輯

回復 3# owen06


    先謝謝你..如果我想要更新他而不是選擇它呢?
我這樣子比較複雜去打的話,該如何set data source跟seriouscollection?
  1. Option Explicit

  2. Public analyopt As Integer
  3. Sub main()

  4.     frmselect.Show
  5.     Select Case analyopt
  6.         Case 1
  7.             Call Histdata1
  8.         Case 2
  9.             Call Histdata2
  10.         Case 3
  11.             Call Histdata3
  12.     End Select
  13.         
  14. End Sub
  15. Sub Histdata1()
  16.     Dim OHLCrange1 As Range
  17.     Dim DateRange1 As Range
  18.    
  19.     With ws1
  20.         .Visible = True
  21.         .Activate
  22.    
  23.             Set OHLCrange1 = .Range("A2, E25")
  24.     End With
  25.    
  26.     Call create1chart(OHLCrange1, DateRange1)
  27.    
  28. End Sub
  29. Sub create1chart(OHLCrange1 As Range, DataRange1 As Range)

  30.     With chart1
  31.         .Visible = True
  32.         .Activate
  33.         .SetSourceData OHLCrange1
  34.         .Deselect
  35.         
  36.     End With

  37. End Sub
  38. Sub Histdata2()
  39.     Dim OHLCrange2 As Range
  40.     Dim DateRange2 As Range
  41.    
  42.     With ws2
  43.         .Visible = True
  44.         .Activate
  45.    
  46.             Set OHLCrange2 = .Range("A2, E47")
  47.             Set DateRange2 = .Range("A2, A47")
  48.     End With
  49.    
  50.     Call create1chart(OHLCrange1, DateRange1)
  51.    
  52. End Sub
  53. Sub create2chart()

  54. End Sub
  55. Sub Histdata3()

  56.    
  57. End Sub

  58. Sub create3chart()

  59. End Sub
複製代碼

作者: owen06    時間: 2014-11-18 15:28

回復 4# clayton0403


    不知道這樣是否為你想要的解答?
  1. Option Explicit

  2. Public analyopt As Integer
  3. Sub main()
  4. Dim ANS As Integer
  5. Dim OHLCrange As Range
  6.   frmselect.Show
  7.     Select Case analyopt
  8.         Case 1
  9.             ANS = 1
  10.         Case 2
  11.             ANS = 2
  12.         Case 3
  13.             ANS = 3
  14.     End Select
  15.     Set OHLCrange = Sheets(ANS & "HISTDATA").Range("A2:E" & Sheets(ANS & "HISTDATA").[E65536].End(3).Row)
  16.     Charts(ANS).Select
  17.     With Charts(ANS)
  18.         .Visible = True
  19.         .Activate
  20.         .SetSourceData OHLCrange
  21.         .Deselect
  22.     End With
  23.       
  24. End Sub
複製代碼

作者: clayton0403    時間: 2014-11-18 15:30

回復 5# owen06


    超感恩!!!謝謝大大的幫忙!!!!!!!{:3_48:}




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