標題:
[發問]
如何記綠動態資料的儲存格
[打印本頁]
作者:
kimo5566
時間:
2011-5-3 20:10
標題:
如何記綠動態資料的儲存格
可以請教一下如果 從早十點為例 每隔十分鐘記錄(從十點記錄到十點二十分) 項目一 項目二 的資料
感謝
附註:項目資料會隨時間經過而變動
sheet1
時間 10:00:00 10:00:00 10:00:00 10:00:00
名稱 甲 乙 丙 丁
項目一 10 20 30 40
項目二 3 4 5 6
sheet2 (假設十點十分的值如下) (假設十點二十分的值如下)
10:00:00 10:10:00 10:20:00
項目一 項目二 項目一 項目二 項目一 項目二
甲 10 3 20 5 40 2
乙 20 4 30 6 50 3
丙 30 5 40 7 60 4
作者:
GBKEE
時間:
2011-5-4 20:01
回復
1#
kimo5566
請附上你的檔案
作者:
kimo5566
時間:
2011-5-5 02:51
本帖最後由 Hsieh 於 2011-5-5 08:27 編輯
回復
2#
GBKEE
板大已經
附上檔案
感謝
作者:
GBKEE
時間:
2011-5-5 08:38
本帖最後由 GBKEE 於 2011-5-5 08:59 編輯
回復
3#
kimo5566
請將 程式碼 貼於 一般模組內 存檔關閉後 再開啟檔案時自動執行Auto_Open的程序
Option Explicit
Sub Auto_Open()
Dim T As Date
T = Time '現在時間
Sheets("Sheet2").UsedRange.Offset(, 1).Select
If T < #1:30:00 PM# Then Sheets("Sheet2").UsedRange.Offset(, 1).Clear
'早於開盤時間時清除舊有資料
If T < #9:00:00 AM# Then T = #9:00:00 AM# Else T = Now
'現在時間 早於開盤時間時 [設定的時間] 為 9點
'現在時間 晚於等於開盤時間時 [設定的時間]為 現在時間 '
Application.OnTime T, "Ex" '於[設定的時間]執行 Ex 程序
End Sub
Sub Ex()
Dim Rng As Range, T As Date
T = Time
With Sheets("Sheet2")
Set Rng = .Cells(2, Columns.Count).End(xlToLeft).Offset(, 1) '記錄下來的位置
Rng.Resize(, 2) = T
Rng.Offset(1).Resize(3, 2) = Sheets("Sheet1").Range("C1").Resize(3, 2).Value
Rng.Resize(, 2).EntireColumn.AutoFit
End With
If Minute(T) Mod 10 Then '設定時間的分鐘 不是 10 ,20,30....
T = TimeSerial(Hour(T), Minute(T) + (10 - Minute(T) Mod 10), 0)
'調整設定時間的分鐘 是 10 ,20,30....
Rng.Resize(, 2).NumberFormatLocal = "h:mm:ss AM/PM"
Else
T = T + #12:10:00 AM# '[設定時間]+10分鐘 10 ,20,30....
End If
If Time < #1:30:00 PM# Then '於開盤時間時內
Application.OnTime T, "Ex" '於[設定的時間]執行 Ex 程序
End If
End Sub
複製代碼
作者:
kimo5566
時間:
2011-5-5 21:42
回復
4#
GBKEE
感謝板大已經可以run了
請問一下 Cells(2====> 是指兩個項目變動寫2 若三項就寫3 請問這樣修正嗎 以下碼不維持不變
Set Rng =
.Cells(2
, Columns.Count).End(xlToLeft).Offset(, 1) '記錄下來的位置
Rng.Resize(, 2) = T
Rng.Offset(1).Resize(3, 2) = Sheets("Sheet1").Range("C1").Resize(3, 2).Value
Rng.Resize(, 2).EntireColumn.AutoFit
還有一個想問是一分鐘的話 是不是修成以下這樣就好了
If Minute(T) Mod 1Then
T = TimeSerial(Hour(T), Minute(T) + (1 - Minute(T) Mod 1), 0)
作者:
luhpro
時間:
2011-5-5 22:11
本帖最後由 luhpro 於 2011-5-5 22:14 編輯
回復
5#
kimo5566
1. Cells(2, ... 的 2 指的是第 2 列.
語法 : Cells(列號, 欄號)
Cells( 3, 2) = Range("B3") <第 2 欄 = B>
Cells(10, 5) = Range("E10") <第 5 欄 = E>
並非你所想的情形.
2. 你那個公式的結果會變成永遠不會觸發.
若要針對每一分鐘的情形應該是要對秒數 Mod 60 .
原先 xx:x9:59 <--- 分鐘數 Mod 10 結果為 9
xx:x0:00 <--- 分鐘數 Mod 10 結果為 0
所以每 10 分鐘會變動一次
至於每分鐘都要跳過一次, 若依你的方式
xx:00:01 <--- 分鐘數 Mod 1 結果為 0
xx:00:02 <--- 分鐘數 Mod 1 結果為 0
xx:01:xx <--- 分鐘數 Mod 1 結果為 0 (餘同)
應該改成這樣
xx:xx:59 <--- 秒鐘數 Mod 60 結果為 59
xx:xx:00 <--- 秒鐘數 Mod 60 結果為 0
才對喔.
作者:
GBKEE
時間:
2011-5-6 07:53
本帖最後由 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("iv
2
")
.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
作者:
kimo5566
時間:
2011-5-6 20:58
回復
7#
GBKEE
感謝板主細心解說
讓我學到很多東西感謝
作者:
kimo5566
時間:
2011-5-6 23:18
回復
7#
GBKEE
板主想再請教裡面二個語法問題
第一是
我把項目改成5列四欄的話
Rng.Offset(1).Resize(5, 4) = Sheets("Sheet1").Range("C1").Resize(5, 4).Value
Rng.Resize(, 2).EntireColumn.AutoFit 這句要去改變裡面的 Resize(,
2
) 數字
還有這句表達什麼
第二是
調整為每分鐘紀錄可修改如下
If Second(T) <> 0 Then
T = TimeSerial(Hour(T), Minute(T) + 1, 0)
之前有一句要刪掉嗎
Rng.Resize(, 2).NumberFormatLocal = "h:mm:ss AM/PM"
Else
T = T + #12:01:00 AM# '[設定時間]+1分鐘
ENDIF
作者:
GBKEE
時間:
2011-5-7 06:26
回復
9#
kimo5566
對於vba 的方法,屬性你可多查看說明 ,如在程式碼中 選取 EntireColumn 按下F1 就可查看到說明.
EntireColumn.AutoFit =>指定範圍的整個欄 .欄寬和列高調整為最適當的值
Rng.Resize(, 2).NumberFormatLocal = "h:mm:ss AM/PM"
是將範圍格式設為"h:mm:ss AM/PM",刪不刪皆可.
作者:
kimo5566
時間:
2011-5-7 21:13
回復
10#
GBKEE
感謝板主耐心回答
現在表格可以正常運算了
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)