ここから本文です

VBA(Excel 2003)に関する質問です。

ten********さん

2010/3/1217:41:23

VBA(Excel 2003)に関する質問です。

A B C
1 日付 予定 ・・・
2 ( ) ( )
3 ( ) ( )
4 ( ) ( )


上記ようなのスケジュール表で、A列に「日付(m"月"d"日")」、B列に「予定」を表示しています。
そこで、昨日までの日付の行全体を削除して、A2に今日の日付を表示
するには、どうすればいいでしょうか?

私自身VBAに関しては初心者で、かなり初歩的な質問で申し訳ありませんが
宜しくお願いします。

補足説明不足で申し訳ありません。
既に回答頂いた[porihikoletskun]さんのコードは、「セルA2」が昨日以前の日付ですと有効ですが、
「セルA2」が既に「今日」の日付になっている状態でマクロを実行すると、日付がずれてしまいます。
「同じ日に複数回、起動時にマクロを実行する」という前提でお願いします。
尚、日付は「セルA2」から昇順で並んでいます。

閲覧数:
187
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

por********さん

編集あり2010/3/1305:21:23

こんにちは。
データが2行目から始まっているとします。そして、昇順に並んでするとしますね。
VBAコードだと、
修正版ですが
削除行数 = WorksheetFunction.CountIf([a:a], "<" & Format(Date, "m/d"))
if 削除行数 >0 then
Rows("2:" & 削除行数 + 1).Delete
end if
if range("A" & rows.count).end(xlup).row = 1 then
range("A2").value = Date
end if
でよさそうなんです
A列は、表示形式を設定している、ということなので、単純に、今日よりも前の日付の数を
カウントして、そのまま、削除させました。
>補足より
たしかに、いつも、毎回実行するのは、対応させないといけませんね。

削除後、最終行が1ということは、見出ししかないので、本日の日付を設定。
「書式の設定は、いつ、どこでしてますかね。必要だったら、20行くらい設定するようにしたらいいです。

質問した人からのコメント

2010/3/13 15:06:28

降参 porihikoletskunさん

早速回答頂きありがとうございます。
頂いたコードで問題なく表示できました。

ベストアンサー以外の回答

1〜1件/1件中

har********さん

2010/3/1300:13:46

これでいいですかね?

/*************************************************************/

Sub test()
'行番号取得
Dim Row As Long

'行番号取得
Row = Cells(Rows.Count, 1).End(xlUp).Row
If Row = "1" Then
Row = Row + 1
End If

'一番下の行から上を消去
Rows(2 & ":" & Row).Select
Selection.Delete Shift:=xlUp

'セルA2に対し今日の日付を入力

Range("A2").Value = Month(Date) & "月" & day(Date) & "日"

End Sub

/*************************************************************/

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる