プロが教えるわが家の防犯対策術!

教えてください。WinXP、Excel2000を使って、A1に日付、B1に記録をつけていて、枠線で囲んで、毎日記録しているのですが、一回一回、行を挿入するのが大変なので、マクロもしくはVBAで、ファイルを開いた瞬間に、自動的に1行挿入され、かつAの列に、その当日の日付が入るようにするにはどうしたらよいでしょうか?

A 回答 (5件)

#02です。


ブックを開いたときに指定したシートのB列の最終行の1行下に日付と罫線を入れるマクロにしました。マクロをペーストする方法は#02と一緒です

Private Sub Workbook_Open()
Dim LastR As Long
 With Worksheets("Sheet1") 'シート名が違うなら「Sheet1」を修正する
  LastR = .Range("B65536").End(xlUp).Row
  .Cells(LastR + 1, 1) = Date
  Range(.Cells(1, 1), .Cells(LastR + 1, 2)).Borders.LineStyle = xlContinuous
 End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。すごく助かりました。

お礼日時:2006/10/22 11:29

>その次の日は3行目に、行を挿入したいのですが、言葉足らずで申し訳ありません。



挿入ではなくて追加ですよね?

Cells(Rows.Count, 1).End(xlUp).Activate
If ActiveCell <> Date And ActiveCell <> "" Then
Rows(Selection.Row).Copy Rows(Selection.Row + 1)
ActiveCell.Offset(1) = Date
ActiveCell.Offset(1, 1).ClearContents
End If
    • good
    • 0
この回答へのお礼

ありがとうございました。すごく助かりました。

お礼日時:2006/10/22 11:30

こんにちは。



今日を入力する為に、前日までの分は一段下げ、
今日は常に一行目(B1)に入力するということですね。

標準モジュールに以下のコードを置いておけば
該当Bookが開いたときに質問のようになります。

-----------------------------------------------
Sub Auto_Open()
  Range("A1").EntireRow.Insert

  With Range("A1")
    .Value = Date
    .NumberFormatLocal = "yyyy/m/d"
    .EntireColumn.AutoFit
  End With

  With Range("A1:B1").Borders
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With

  Range("B1").Select
End Sub
--------------------------------------------------

コードを見れば分かると思いますが次のようなことをしています。

1行目に1行挿入
A1に今日の日付を代入
A1の表示形式を日付に設定
A列の幅を日付の幅に設定
A1:B1 に罫線を設定
B1に入力できるようにB1をSelectしておく

以上です。
 

この回答への補足

すいません。説明不足でした。その逆です。例えば1行目、2行目にデータを入力したら、その次の日は3行目に、行を挿入したいのですが、言葉足らずで申し訳ありません。

補足日時:2006/10/20 15:32
    • good
    • 0
この回答へのお礼

ありがとうございました。すごく助かりました。

お礼日時:2006/10/22 11:31

こんなマクロでしょうか。


マクロはALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名配下のThisWorkbookを右クリック」→「コードの表示」で表示される画面にペーストして下さい。BOOKを開いたときに毎回実行されます

Private Sub Workbook_Open()
Worksheets("Sheet1").Activate 'シート名が違うなら「Sheet1」を修正する
Range("A1:B1").Insert Shift:=xlDown 'A1:B1のセルを挿入
Cells(1, 1) = Date
Range("A1:B1").Borders.LineStyle = xlContinuous '罫線を引く
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。すごく助かりました。

お礼日時:2006/10/22 11:32

下記の文を、シートモジュールの


Private Sub Worksheet_Activate()
などに記述して置けば良いかと思います。

If Range("A1") <> Date Then
Rows("1:1").Copy
Rows("1:1").Insert Shift:=xlDown
Application.CutCopyMode = False
Range("A1") = Date
End If
    • good
    • 0
この回答へのお礼

ありがとうございました。すごく助かりました。

お礼日時:2006/10/22 11:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!