返回列表 上一主題 發帖

[發問] 如何記綠動態資料的儲存格

回復 1# kimo5566
請附上你的檔案

TOP

本帖最後由 GBKEE 於 2011-5-5 08:59 編輯

回復 3# kimo5566
請將 程式碼 貼於 一般模組內 存檔關閉後 再開啟檔案時自動執行Auto_Open的程序
  1. Option Explicit
  2. Sub Auto_Open()
  3.     Dim T As Date
  4.     T = Time                                       '現在時間
  5.     Sheets("Sheet2").UsedRange.Offset(, 1).Select
  6.     If T < #1:30:00 PM# Then Sheets("Sheet2").UsedRange.Offset(, 1).Clear
  7.     '早於開盤時間時清除舊有資料
  8.     If T < #9:00:00 AM# Then T = #9:00:00 AM# Else T = Now
  9.     '現在時間 早於開盤時間時      [設定的時間] 為 9點
  10.     '現在時間 晚於等於開盤時間時  [設定的時間]為 現在時間    '
  11.     Application.OnTime T, "Ex"          '於[設定的時間]執行 Ex 程序
  12. End Sub
  13. Sub Ex()
  14.     Dim Rng As Range, T As Date
  15.     T = Time
  16.     With Sheets("Sheet2")
  17.         Set Rng = .Cells(2, Columns.Count).End(xlToLeft).Offset(, 1)  '記錄下來的位置
  18.         Rng.Resize(, 2) = T
  19.         Rng.Offset(1).Resize(3, 2) = Sheets("Sheet1").Range("C1").Resize(3, 2).Value
  20.         Rng.Resize(, 2).EntireColumn.AutoFit
  21.     End With
  22.     If Minute(T) Mod 10 Then      '設定時間的分鐘 不是 10 ,20,30....
  23.        T = TimeSerial(Hour(T), Minute(T) + (10 - Minute(T) Mod 10), 0)
  24.            '調整設定時間的分鐘 是 10 ,20,30....
  25.         Rng.Resize(, 2).NumberFormatLocal = "h:mm:ss AM/PM"
  26.     Else
  27.         T = T + #12:10:00 AM#      '[設定時間]+10分鐘  10 ,20,30....
  28.     End If
  29.     If Time < #1:30:00 PM# Then    '於開盤時間時內
  30.         Application.OnTime T, "Ex"  '於[設定的時間]執行 Ex 程序
  31.     End If
  32. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2011-5-6 07:57 編輯

回復 5# kimo5566
**項目變動需修改 你要擴充為幾列幾欄的範圍**
With Sheets("Sheet2")
Set Rng = .Cells(2, Columns.Count).End(xlToLeft).Offset(, 1)  '寫下記錄的位置
          . => Sheets("Sheet2")
                .Cells(2, Columns.Count) => range("iv2")
                .End(xlToLeft)=>所在範圍向左移動直到有資料的位置
                .Offset(, 1)=>所在範圍向右移動 1欄

Rng.Resize(, 2) = T    => 寫下記錄的位置.擴充為1列2欄的範圍=T
Rng.Offset(1).Resize(3, 2) = Sheets("Sheet1").Range("C1").Resize(3, 2).Value
=>寫下記錄的位置.所在範圍向下移動 1列,擴充為3列2欄的範圍=Sheets("Sheet1").Range("C1").Resize(3, 2).Value

If Minute(T) Mod 10 Then      '設定時間的分鐘 不是 10 ,20,30....
這條件式為 如你是開盤後才打開檔案時 來調整時間的為每10 ,20,30....紀錄
要調整為每分鐘紀錄可修改如下
If Second(T) <> 0 Then
T = TimeSerial(Hour(T), Minute(T) + 1, 0)
Else      
  T = T + #12:01:00 AM#      '[設定時間]+1分鐘  
ENDIF

TOP

回復 9# kimo5566
對於vba 的方法,屬性你可多查看說明 ,如在程式碼中 選取 EntireColumn  按下F1 就可查看到說明.
EntireColumn.AutoFit  =>指定範圍的整個欄 .欄寬和列高調整為最適當的值
Rng.Resize(, 2).NumberFormatLocal = "h:mm:ss AM/PM"
是將範圍格式設為"h:mm:ss AM/PM",刪不刪皆可.

TOP

        靜思自在 : 生氣,就是拿別人的過錯來懲罰自己。
返回列表 上一主題