2008年4月7日 星期一

計算兩個日期間之天數函數

微軟提供的函數ElapsedTimeString
http://office.microsoft.com/zh-tw/access/HA011102181028.aspx

由Access改成以Excel方式來處理
步驟1:以Excel開啟,並預先指定好各欄位
流水號
(必填欄位,
可任意值不能空白)
合約開始日 合約結束日 區段查詢日 合約開始
至區段查詢服務天數
合約總服務天數 合約目前執行比例
=E1 / F1
10248 2004/9/20 2007/3/19 2006/12/31      
11083 2006/1/16 2007/1/15 2006/12/31      

步驟2:按Alt+F11開啟VB編輯器
步驟3: 由主選單選擇 插入| 模組
並且將微軟相關提供之函數,放置於此處,以便該Excel VBA去呼叫
步驟4:由主選單之 檢視(V) | 工具列(T) | 選擇 控制工具箱 ,並加入一個 指令按鈕,筆者將此按鈕命名為 BtnComputeDate,系統即可透過該函數,自動計算兩日期間之相差

Private Sub BtnComputeDate_Click()
Application.ScreenUpdating = False '暫時關閉即時顯示畫面,避免畫面一直閃動
intRow = 2 '跳過第1列(標題),由第2列開始處理
Do Until Cells(intRow, 1).Value = "" '設置迴圈,一直執行到沒有資料為止
Cells(intRow, 5).Value = "" '先清除合約開始至區段查詢天數
Cells(intRow, 5).Value = ElapsedTimeString(Cells(intRow, 2).Value, Cells(intRow, 4).Value)

Cells(intRow, 6).Value = "" '先清除合約開始至合約結束天數
Cells(intRow, 6).Value = ElapsedTimeString(Cells(intRow, 2).Value, Cells(intRow, 3).Value)

Cells(intRow, 7).Value = "" '先清除執行比例
Cells(intRow, 7).Value = Cells(intRow, 5).Value / Cells(intRow, 6).Value

intRow = intRow + 1 '處理下一筆資料
Loop
Application.ScreenUpdating = True

End Sub