对不起,如果没有解释得太好,我是一个宏新手,所以我不确定这个是否可能..
我希望为一些简单的统计报告创建工作日表,每天自动创建一个新行,并删除最旧的行,显示当天和之前6天的数据。理想情况下,我希望当前在表格的顶部,并且每天相应行中输入的数据向下移动1行,为新的一天的统计数据创建空间。
作为一些背景信息,我试图做什么..我基本上创建一个友好的UI显示(离线HTML)的数据记录在一个非常简单的5列(统计)由7行(工作日)表。这个数据库需要由技术能力有限的多个人更新,所以我基本上试图让他们每天输入统计数据尽可能容易,而不必担心更新到正确的日期并确保他们正在更换从理论上讲,每天更新表格的过程自动化,以便为他们输入当前天数数据,将昨天数据推下一行(如果整个表格的单元格范围)总是一样的,它应该允许我自动更新离线HTML显示。)
有什么想法吗?
答案 0 :(得分: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
答案 1 :(得分: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