0

これがあまりよく説明されていない場合は申し訳ありませんが、私はマクロ初心者なので、これが可能かどうかはわかりません..

毎日新しい行を自動的に作成し、最も古い行を削除して、当日と 6 日前のデータを表示する単純な統計レポート用の平日のテーブルを作成しようとしています。理想的には、現在の日を表の一番上に置き、毎日、対応する行に入力されたデータが 1 行下に移動して、新しい日の統計用のスペースを作成します。

何をしようとしているのかについての背景情報として..基本的に、非常に単純な5列(統計)×7行(平日)の表に記録されたデータの使いやすいUI表示(オフラインHTML)を作成しています。このデータベースは、技術的能力が限られている複数の人が更新する必要があるため、基本的には、正しい日付に更新したり、データを置き換えたりすることを心配することなく、毎日の統計をできるだけ簡単に入力できるようにしようとしています。正しい日のデータなど。理論的には、テーブルを毎日更新するプロセスを自動化して、現在の日付のデータを入力するためのスペースを作成し、昨日のデータを 1 行下に移動することをお勧めします (セル範囲がテーブル全体の場合オフラインの HTML 表示の更新も自動化できるはずです)。

何か案は?

4

2 に答える 2

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
于 2013-03-27T14:15:36.143 に答える
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
于 2013-03-27T14:16:51.983 に答える