ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] ½Ð±Ð§ì¨ú¤Ó¥­¬vÃÒ¨÷ªºDDE ­n¦p¦ó±q¤¤§ì¨ú¨C¤ÀÄÁªº³Ì¤j¦¨¥æ»ù¤Î³Ì¤p¦¨¥æ»ù

¦^´_ 10# GBKEE
lieh_chun ¥L­nªº¬O½L¤¤ªº Open/High/Low/Close ¦Ó¤£¬O Max¡BMin¡C
¦^´_ 9# lieh_chun
¦]§AµLÅv­­¤U¸ü¡A©Ò¥H¥u¦n±Nµ{¦¡¶K¤W¡A§A±N¥¦¥þ³¡Âл\¨ì§Aªº ThisWorkbook µ{¦¡°Ï¤ºÀx¦s¡A¦A­«±Ò´N OK ¤F¡I
  1. Option Explicit
  2. Dim Ov As Single, Hv As Single, Lv As Single, Cv As Single, cIndex As Single
  3. Dim timerEnabled As Boolean    ' §P©w¶}±Ò¥»¤u§@ªí³æªº®É¬q¬O§_¬°¶}½L«e±Ò°Ê¡C
  4. Public turnKey As Integer

  5. Private Sub Workbook_Open()
  6.     timerEnabled = False

  7.     Call timerStart      ' µ{¦¡¤@±Ò©l¡A«K¥h¦Û°Ê°õ¦æ timerStart
  8. End Sub

  9. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  10.     On Error Resume Next
  11.     Application.OnTime Now + TimeValue("00:00:01"), "ThisWorkbook.ATimer", , False
  12.    
  13.     Me.Save
  14. End Sub

  15. Public Sub ATimer()
  16.     Dim Pos As Long             ' ±N¨C¹j "¦h¤Ö®É¶¡" ³B²z®É¬q¡A²¾¨ì¦¹³B¨Ó³B²z¡C
  17.    
  18.     On Error Resume Next
  19.     If (TimeValue(Now) > TimeValue("13:45:00")) Then Exit Sub
  20.    
  21.     If (TimeValue(Now) >= TimeValue("08:45:00")) Then         ' ¶}½L¡B¦¬½L®É¬q³]©w
  22.         ' ½L¤¤³B²z¡A±N¸ê®Æ¶×¤J¼g¤J¤u§@ªí³æ¤ºÀx¦s¡C
  23.         With Sheets("µ¦²¤°O¿ý")
  24.             Pos = .Range("B" & Rows.Count).End(xlUp).Row   ' ¨D¥X¸ÓÄ椧³Ì«á¨Ï¥Î¦C¼Æ  ' ¥Ø«e¬° 329
  25.             If (Pos < 2) Then Pos = 12
  26.             Pos = Pos + 1                   ' ±NÅܰʦ渹¥[¤@¦æ

  27.             If Not IsError(.[B2]) Then
  28.                 .[T1] = "¶}½L»ù"
  29.                 .[U1] = "³Ì°ª»ù"
  30.                 .[V1] = "³Ì§C»ù"
  31.                 .[W1] = "¦¨¥æ»ù"
  32.                 .[T2] = Ov      ' ¶}½L»ù
  33.                 .[U2] = Hv      ' ³Ì°ª»ù
  34.                 .[V2] = Lv      ' ³Ì§C»ù
  35.                 .[W2] = Cv      ' ¦¨¥æ»ù
  36.                  
  37.                  .Cells(Pos, 1) = Time           ' ®É¶¡
  38.                 ' ¦hªÅ¤O¹D¡B¤Ï¦V¶Õ¤O¡B¥D¤O±±½L¡B¤º¥~½L¤ñ%¡B¦¨¥æ»ù¡Bº¦¶^¡B
  39.                 ' Á`¶q¡B³Ì°ª¡B³Ì§C¡B¥[Åv«ü¼Æ¡Bº¦¶^¡B²Ö­p©e¶R¡B²Ö©e¶Rµ§¡B
  40.                 ' ²Ö­p©e½æ¡B²Ö©e½æµ§¡B°ò®t¡B©e¤ñ¡B©e¶R½æ®t¡B
  41.                 ' ¶}½L»ù¡B³Ì°ª»ù¡B³Ì§C»ù¡B¦¬½L»ù
  42.                 .Cells(Pos, 2).Offset(0).Resize(, 22) = .[B2:W2].Value
  43.             End If
  44.         End With
  45.     End If
  46. End Sub

  47. Sub timerStart()
  48.     turnKey = 0
  49.     Sheets("µ¦²¤°O¿ý").Range("B6").Value = 0
  50.    
  51.     If timerEnabled Then
  52.         ' ²Ä¤G¦¸(§t)¥H«á§¡¥H³]©w¤§ "¶¡¹j®É¬q" ¨Ó³B²z°õ¦æ§Çªº§@·~¡C
  53.         Application.OnTime (Now + TimeValue("00:00:01")), "ThisWorkbook.ExeSelf"
  54.     Else
  55.         timerEnabled = True
  56.         
  57.         ' ±N²Ä¤@¦¸±Ò°Ê®É¶¡§ó§ï¬°³]©w "¶}½L®É¶¡"«e¡A¦pªG¶}±Ò Excel ®É¡A¤w¸g¹L¤F³]©w "¶}½L®É¶¡"¡A«h¤@¶i¤J¨t²Î§Yª½±µ¥h°õ¦æ¬ö¿ý§@·~¡C
  58.         If (TimeValue(Now) <= TimeValue("08:45:00")) Then
  59.             Application.OnTime (TimeValue("08:45:00")), "ThisWorkbook.ExeSelf"
  60.         Else
  61.             ' ¨t²Î­è³s¤W DDE ¦Ü¸ê®Æ¶×¤JExcel¤u§@ªí³æ¡A¶·¦³¤@­Ó½w½Ä®É¬q¡A
  62.             ' ³o®É¦pªG°¨¤W¥h§ì¨úDDE¸ê®Æ¡A·|¦³«¬ºA¤£²Åªº¿ù»~°T®§²£¥Í¡A¨Ã¤¤Â_°õ¦æ§Çªº§@·~¡C
  63.             Application.OnTime (Now + TimeValue("00:00:05")), "ThisWorkbook.ExeSelf"
  64.         End If
  65.     End If
  66. End Sub

  67. Private Sub ExeSelf()
  68.     Dim nums As Integer            ' ¹w³]¬° 60 ¬í
  69.    
  70.     nums = 60
  71.     On Error Resume Next
  72.     If (TimeValue(Now) < TimeValue("08:45:00") Or TimeValue(Now) > TimeValue("13:46:01")) Then Exit Sub
  73.       
  74.     If IsError(Sheets("µ¦²¤°O¿ý").Range("F2").Value) Then
  75.         Cv = 0
  76.     Else
  77.         Cv = Sheets("µ¦²¤°O¿ý").Range("F2").Value    ' ¦¨¥æ»ù
  78.     End If
  79.          
  80.     If (turnKey = 0 Or Ov = 0) Then
  81.         Ov = Cv                                      ' ¶}½L»ù
  82.         Hv = Cv                                      ' ³Ì°ª»ù
  83.         Lv = Cv                                      ' ³Ì§C»ù
  84.     End If
  85.         
  86.     turnKey = turnKey + 1
  87.            
  88.     If (Cv > Hv) Then Hv = Cv                        ' ³Ì°ª»ù
  89.     If (Cv < Lv) Then Lv = Cv                        ' ³Ì§C»ù
  90.       
  91.     Sheets("µ¦²¤°O¿ý").Range("B6").Value = " ( " & turnKey & " ¬í )"
  92.    
  93.     If (turnKey < nums) Then
  94.         Application.OnTime (Now + TimeValue("00:00:01")), "ThisWorkbook.ExeSelf"
  95.     Else
  96.         If (Cv > 0) Then Call ATimer
  97.         If timerEnabled Then Call timerStart
  98.     End If
  99. End Sub
½Æ»s¥N½X
DDE for lieh_chun.rar (62.46 KB)

TOP

¦^´_ 10# GBKEE
±zªº¹Bºâ¤èªk§Ú·|©âªÅ¨Ó¸Õ¸Õ¬Ý¡A¥¦ªº½T¤]¬O¤£¿ùªº³B²z¤è¦¡¡A
§Ú¬O¥Î¤ñ¸ûª½±µªº¤è¦¡¨Ó³B­ù¡AÅܼơB»P°}¦Cªº¨Ï¥ÎÁöµ²ªG¤@¼Ë¡A
§Ú¹Ïªº¥u¬O¥H«á¦n Maintenance¡B¥B©ö§P§O¤§¬G¡C

TOP

¦^´_ 11# c_c_lai
lieh_chun ¥L­nªº¬O½L¤¤ªº Open/High/Low/Close ¦Ó¤£¬O Max¡BMin¡C
9# §Ú­n°O¿ý¨C¤ÀÄÁ¦¨¥æ»ùªº³Ì°ª¤Î³Ì§CÂI    10#µ{¦¡½X¥i¹F¦¨¦¹®ÄªG
Open/High/Low/Close ¤£¬O¹ïÀ³µÛ¨C¤ÀÄÁªº  AR(0)'¶}½L»ù /Application.Max(AR)'³Ì°ª»ù / Application.Min(AR)'³Ì§C»ù /AR(UBound(AR))'¦¬½L»ù

TOP

¦^´_ 13# GBKEE
½Ð±Ð±z¥¦¬°¦ó¤@ª½¤£°Ê¡H Worksheet_Calculate() ¬O User Define Or Worksheet ¤º©wIJµoµ{¦¡¡H
¦]¬°§Ú«Ü¤Ö¨Ï¥Î Excel Ãþ¦ü¦¹Ãþªº¤èªk (Method)¡A ½Ð±z«ü¾É¡I
DDE for GBKEE.rar (10.12 KB)

TOP

¥»©«³Ì«á¥Ñ GBKEE ©ó 2012-8-26 11:49 ½s¿è

¦^´_ 14# c_c_lai
ThisWorkbook  ¼Ò²Õªºµ{¦¡½X
  1. Public ¬ö¿ý_Msg As Boolean
  2. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  3.     ¬ö¿ý_Msg = True
  4. End Sub
  5. Private Sub Workbook_Open()
  6.     Run "¤u§@ªí1.¬ö¿ý"     ' µ{¦¡¤@±Ò©l¡A«K¥h¦Û°Ê°õ¦æ ¤u§@ªí1.¬ö¿ý
  7. End Sub
  8. Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
  9.     'ThisWorkbook ªº­«ºâ¨Æ¥ó
  10.     'Sh ¶Ç¦^¬O­þ¤@­Ó¤u§@ªí¦³­«ºâ
  11. End Sub
½Æ»s¥N½X
¤u§@ªí1¼Ò²Õªºµ{¦¡½X
  1. '¤u§@ªí1¼Ò²Õªºµ{¦¡½X(­«ºâ¨Æ¥ó )
  2. '¤u§@ªí1 ªºA1 B1 C2 D1 E1 : ®É¶¡/¶}½L/»ù³Ì°ª»ù/³Ì§C»ù/¦¬½L»ù
  3. Private Sub Worksheet_Calculate()
  4.     Static Msg As Boolean                      '¥Î¥H§P©w¬O§_¬°¨C¤é²Ä¤@¦¸°õ¦æ
  5.     Static Time_Calculate As Date              '°O¿ý¨C¤ÀÄÁªº®É¶¡
  6.     Static AR                                  '°}¦C:°O¿ý¦¨¥æ»ù®æ
  7.     If Time < #8:30:00 AM# Then Exit Sub
  8.     Application.EnableEvents = False           '°±¤îª«¥ó¯àIJµo¨Æ¥ó(Worksheet_Calculate)
  9.     If Msg = False Then
  10.         Time_Calculate = TimeSerial(Hour(Time), Minute(Time), 0) '¨C¤ÀÄÁªº®É¶¡
  11.         Range("A1").CurrentRegion.Offset(1) = ""                '²M²z¬Q¤é¸ê®Æ
  12.         ReDim AR(0)                                              '­«·s³]¬°¤@¤¸¯À
  13.     End If
  14.     Msg = True
  15.     If Time >= Time_Calculate + #12:01:00 AM# Then
  16.             With Cells(Rows.Count, 1).End(xlUp).Offset(1)
  17.                 .Cells(1, 1) = Time_Calculate                    '®É¶¡
  18.                 .Cells(1, 2) = AR(0)                             '¶}½L»ù
  19.                 .Cells(1, 3) = Application.Max(AR)               '³Ì°ª»ù
  20.                 .Cells(1, 4) = Application.Min(AR)               '³Ì§C»ù
  21.                 .Cells(1, 5) = AR(UBound(AR))                    '¦¬½L»ù
  22.             End With
  23.             Time_Calculate = TimeSerial(Hour(Time), Minute(Time), 0)
  24.             ReDim AR(0)
  25.     End If
  26.     If AR(UBound(AR)) <> "" Then ReDim Preserve AR(UBound(AR) + 1) '­«·s¦A¥[¤W¤@¤¸¯À
  27.     AR(UBound(AR)) = [iv1]                      '°O¿ý¦¨¥æ»ù®æ¦¨¥æ»ù
  28.     Application.EnableEvents = True           '«ì´_ª«¥ó¯àIJµo¨Æ¥ó(Worksheet_Calculate)
  29. End Sub
  30. '¼Ó¥DÀɮ׬O¤Þ¥Î¤Ó¥­¬vÃҨ骺DDE =¦n¯«³q!D4 ¤£¥²¦³¦¹µ{§Ç
  31. '¬ö¿ýµ{§Ç:¬O´ú¸ÕWorksheet_Calculateªº¥¿½T©Ê
  32. Private Sub ¬ö¿ý()
  33.     '¬ö¿ý®É¶¡°õ¦æ°j°é ¤Å°õ¦æ¨ä¥Lµ{¦¡©Î¿é¤J¸ê®Æ
  34.     Dim t As Date, »ù®æ(1 To 4) As Single
  35.     »ù®æ(1) = 100
  36.     »ù®æ(2) = Round(»ù®æ(1) + »ù®æ(1) * 0.07, 2)
  37.     »ù®æ(3) = Round(»ù®æ(1) - »ù®æ(1) * 0.07, 2)
  38.     t = Time
  39.     Do
  40.         DoEvents
  41.         If Time > t + #12:00:05 AM# Then
  42.             t = Time
  43.             »ù®æ(4) = Round((»ù®æ(2) - »ù®æ(3) + 1) * Rnd() + »ù®æ(3), 2) '¦¨¥æ»ùªº¶Ã¼Æ
  44.             If »ù®æ(4) > »ù®æ(2) Then »ù®æ(4) = »ù®æ(2)
  45.             If »ù®æ(4) < »ù®æ(3) Then »ù®æ(4) = »ù®æ(3)
  46.             [iv1] = "=" & »ù®æ(4)      'Àx¦s®æ¤½¦¡
  47.     '****    ­nIJ°ÊWorksheet_Calculate: Àx¦s®æ¤½¦¡¤§­È¦³ÅÜ°Ê  ****
  48.             Debug.Print [iv1]
  49.         End If
  50.     Loop While ThisWorkbook.¬ö¿ý_Msg = True Or Time <= #1:30:00 PM#
  51.     'Ãö³¬ÀÉÀÉ®× ©Î 1:30:00 PM  °±¤î¬ö¿ý
  52. End Sub
½Æ»s¥N½X

TOP

¦^´_ 15# GBKEE
ÁÂÁ±zÅý§ÚÅé·|¨ì Excel method ªº¤@¨Ç¨Ï¥Î¡A¦ý§Úµoı DoEvents ´X¥G§¹¥þ¦û¾Ú¤F¾ã­Ó§@·~®É¶¡¡A
¦A¤À®É¤À¤u¤W·|¤£·|³y¦¨¬O¤@ºØ­t¾á©O¡H

TOP

¦^´_ 11# c_c_lai


©_©Ç¤F,¤j¤j±z©Ò´£¨Ñªºµ{¦¡½X,§Ú¤U¥hRUN,©~µM¤£·|°Ê£°,³s§Ú§ï¤F¨t²Îªº®É¶¡,ÁÙ¬O¤£·|°Ê,¤£ª¾¹D¬O¨º¨à¦³°ÝÃD??

TOP

¦^´_ 15# GBKEE

ªO¤j ±z¦n~
¦ü¥G¬Ý¤£¬O«ÜÀ´±zªºµ{¦¡½X?¤£ª¾±zªº·N«ä¬O«ü ThisWorkbook ªº¤º½X§ï¦¨±zªºµ{¦¡½X??
¥t¥~¦A´¡¤J¤@­Ó¼Ò²Õ(¤u§@ªí1.¬ö¿ý)§â±zªº¤å¶K¤W¥h³o¼Ë´N¥i¥H°õ¦æ£v??

·PÁ±zªº¦^ÂлP¤À¨É

TOP

¦^´_ 18# lieh_chun
¤W¶Ç§A¾ã²z¹L«á¤§ÀɮסI

TOP

¦^´_ 18# lieh_chun
³o ¤u§@ªí1¼Ò²Õ ¬O WorkSheet ª«¥óªº¼Ò²Õ
15# ¤u§@ªí1¼Ò²Õªºµ{¦¡½X, ¥i½Æ»s¦b¥ô¤@ WorkSheet ª«¥óªº¼Ò²Õ

TOP

        ÀR«ä¦Û¦b : ¤f»¡¦n¸Ü¡B¤ß·Q¦n·N¡B¨­¦æ¦n¨Æ¡C
ªð¦^¦Cªí ¤W¤@¥DÃD