- 締切済み
VBA(Excel 2003)の行削除に関する質問です。
初歩的な質問で申し訳ありません。 A B C 1 日付 予定 … 2 ( ) ( ) 3 ( ) ( ) 4 ( ) ( ) : 上記ようなのスケジュール表で、A列に「日付(書式:m"月"d"日")」、 B列に「予定」を昇順で表示しています。 そこで、マクロを用いて、昨日までの日付の行全体を削除して、「セル A2」に今日の日付が来るように(一番上に「今日」の日付)表示するに は、どうすればいいでしょうか? 尚、下記のようなコードのような場合、「セルA2」が昨日以前の日付 の場合有効ですが、「セルA2」が既に「今日」の日付になっている状態 でマクロを実行すると、表示がずれてしまいます。 これでは、「起動時 にマクロ実行」の設定の場合、同じ日に2回目以降エクセルを起動する と、問題が生じてしまいます。 「起動時にマクロ実行」の設定で、同じ日に複数回エクセルを起動する という前提でお願いします。 ************************************************************* Private Sub Workbook_Open() 削除行数 = WorksheetFunction.CountIf([a:a], "<" & Format(Date)) Rows("2:" & 削除行数 + 1).Delete End Sub *************************************************************
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hige_082
- ベストアンサー率50% (379/747)
こんな方法もあります Private Sub Workbook_Open() If Range("a2").Value = Date Then Exit Sub '追加行 削除行数 = WorksheetFunction.CountIf([a:a], "<" & Date) Rows("2:" & 削除行数 + 1).Delete End Sub 参考まで
- myRange
- ベストアンサー率71% (339/472)
COUNTIFの結果(削除行数)を判断してやればいいでしょう。 また、Format(Date)のFormatはなくてもいいと思いますが。。。 -------------------------- 削除行数 = WorksheetFunction.CountIf([a:a], "<" & Date) If 削除行数 > 0 Then Rows("2:" & 削除行数 + 1).Delete End If ------------------------- 以上です。
お礼
myRangeさん 早速回答頂きありがとうございます。 頂いたコードで問題なく表示できました。
お礼
hige_082さん ご回答ありがとうございます。 勉強になります。