2013-03-27 45 views
0

對不起移動數據,即時通訊宏新手,所以林不知道,如果這個人是甚至有可能..宏與如果不解釋過於良好的日期變更

我期待創造一個工作日表一些簡單的統計報告,每天自動創建一個新行,並刪除最舊的,顯示當天和前6天的數據。理想情況下,我希望當天位於表格頂部,並且每天在相應行中輸入的數據向下移動1行,爲新的一天的統計信息創造空間。

作爲一些背景信息什麼即時嘗試做..即時通訊基本上創建一個非常簡單的5列(統計)由7行(平日)表記錄的數據友好的用戶界面顯示(脫機HTML)。這個數據庫將需要由技術能力有限的多人更新,所以我基本上儘量讓他們儘可能容易地輸入統計數據,而不必擔心更新到正確的日期並確保他們正在替換正確的日子數據等等。理論上講,每天更新表的過程自動化以創建空間讓他們輸入當前日期數據,將昨天的數據向下推進一行(如果單元格範圍爲整個表格總是一樣,它應該允許我自動更新離線HTML顯示器)。

任何想法?

+0

該表將始終5列是7行,對不對嗎?在添加日期時不添加行,您將刪除最舊的並添加新的行,對吧? – 2013-03-27 14:13:15

回答

0

首先給出日期標題單元格的名稱。 (單擊單元格,查看單元格座標出現的屏幕左上角「A1」,「B2」等... 在該文本框中,鍵入標題名稱:「MyDateHeader」

然後,使用這個宏(你可以將它添加到工作簿打開的情況下,或激活)

Sub YourMacro() 

    Dim DateHeader As Range 
    Set DateHeader = Range("MyDateHeader") 

    Dim FirstDateCell As Range 
    Set FirstDateCell = DateHeader.Offset(1, 0) 


    Dim MyDay As Integer, MyMonth As Integer, MyYear As Integer 
    Dim CurrDay As Integer, CurrMonth As Integer, CurrYear As Integer 

    MyDay = Day(FirstDateCell.Value) 
    MyMonth = Month(FirstDateCell.Value) 
    MyYear = Year(FirstDateCell.Value) 

    CurrDay = Day(Date) 
    CurrMonth = Month(Date) 
    CurrYear = Year(Date) 


    If (MyDay <> CurrDay) Or (MyMonth <> CurrMonth) Or (MyYear <> CurrYear) Then 
     FirstDateCell.EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow 
     DateHeader.Offset(1, 0).Value = Date 'Careful, FirstDateCell has moved down. 
     DateHeader.Offset(8, 0).EntireRow.Clear 
    End If 

End Sub 
+0

現在很好! – 2013-03-27 14:33:41

0

這應該讓你開始:

Sub WeekdayTable() 

Dim tbl As Range 
Dim r As Integer 

Set tbl = Range("A1:E7") 'Define your table, 5 columns x 7 rows. Modify as needed. 

For r = tbl.Rows.Count To 2 Step -1 
    tbl.Rows(r).Value = tbl.Rows(r - 1).Value 
Next 

'empty out row 1 
tbl.Rows(1).Clear 

'Assuming the column 1 contains valid DATE values, _ 
' we can use the DateAdd function to print the next date: 
tbl.Cells(1, 1) = DateAdd("d", 1, tbl.Cells(2, 1)) 

End Sub