エクセル97を使っています。
日付 名前 品目 ・・・
1
2
3
・
・
といった表で、日付は2003/2/13という表示になっています。
そこで、今日以前(今日は含まない)の日付の行を削除してしまいたいのですが
どうすればいいでしょうか?
ちなみに、空白行を削除するのに、
Application.ScreenUpdating = False
On Error Resume Next
With Columns("E:F")
.SpecialCells(xlCellTypeConstants).EntireRow.Hidden >=TODAY()
.SpecialCells(xlCellTypeFormulas).EntireRow.Hidden >=TODAY()
.SpecialCells(xlCellTypeComments).EntireRow.Hidden >=TODAY()
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
.EntireRow.Hidden = False
End With
このような記述を使っています。
「今日」というとTODAY()関数ですよね。
でも、関数ってマクロに組み込めるのでしょうか?
しかも「今日以前」という記述はどうすればいいのか?
など考えると、わけがわからなくなりました。
今日以前の行を削除するマクロを教えてください。
ちなみに、日付の行では、曜日を追記する関数を使っております。
条件書式も3パターン使い切っております。
よって、マクロで行いたいです。
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
どうしても古い日付の行を削除したいところならば仕方ないですが、
「オートフィルタ」機能を使ってみるのは如何でしょうか?
表の内部にカーソル置いて、メニューから
「データ」-「オートフィルタ」-「フィルタ」
で適用されます。
印刷用には便利な機能かと思います。
どうしてもマクロで削除したいのであれば、
int(now())で今日の日付がでるので
if 指定セル < int(now()) then その行を消すコード
と記述すれば良いと思います。
この回答への補足
回答ありがとうございます。
Application.ScreenUpdating = False
On Error Resume Next
With Columns("E:F")
.SpecialCells(xlCellTypeConstants).EntireRow.Hidden = True
.SpecialCells(xlCellTypeFormulas).EntireRow.Hidden = True
.SpecialCells(xlCellTypeComments).EntireRow.Hidden = True
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
.EntireRow.Hidden = False
End With
Application.ScreenUpdating = True
Sheets("★進捗管理全て").Select
Range("A2").Select
これは、空白行を削除するマクロです。
これに、答えていただいた、if 指定セル < int(now()) then その行を消すコード
を加えると、どのようになるのでしょうか?
No.3
- 回答日時:
No2のtokuseです。
補足に対して回答します。*まずは訂正で、int(now())はDateでまかなえます。
int(now())でやる理由があるときも無くは無いですが、とりあえずは
日付は2003/02/18という記述で統一されているとすればDateで十分です。
(私は時刻も入る条件分岐などでint(now())を使っていました。)
SpecialCellsではセルの内容を今日の日付と比較することは出来ませんので、
仮にF列に日付が入っているとすると、下記のソースで今日の日付と一致する
セルの行番号が割り出せます。(まあ、GOTOを使ったべたなやり方ですね)
Sub test1()
Dim i As Integer
i = 1
start:
'無限ループを防ぐためのトラップ
If Cells(i, 6) = "" Then Exit Sub
'今日の日付と一致するときにはその行を表示
If Cells(i, 6) = Date Then MsgBox (i)
'今日の日付より前の場合は削除する
'ちなみに一行消したらiは同じ数でないとならないのでGoToする
If Cells(i, 6) < Date Then
Sheets("★進捗管理全て").Rows(i).Delete
GoTo start
End If
'iを増やして一行下のセルに移る
i = i + 1
'以下の記述で"start:"行に飛んでループする
GoTo start
End Sub
データの入っている状況により、上記のコードでは思うように動作しないことも
ありますが、概要は以上です。
簡素なコード例ですので、読み解いて理解いただければ幸いです。
No.1
- 回答日時:
EntireRow.Hidden 、EntireRow.Delete を組み合わせて使ったことはないのですが、私はEntireRow.Deleteを使うことを避けています。
私はプログラムで行番号を示す変数を使うことが多いですが、削除により、勘違いが多くなるのを経験しているからです。(1)Sheet2が空いていればそれを使い、空いてなければ、ワークシートを挿入する。一応Sheet1--->Sheet2
の形で作ります。
(2)今日の日付けだけを抜き出しました。
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")
d = sh1.Range("a1").CurrentRegion.Rows.Count
' MsgBox d
' MsgBox Date
j = 1
For i = 1 To d
If sh1.Cells(i, "a") = Date Then
sh2.Cells(j, "a") = sh1.Cells(i, "a")
sh2.Cells(j, "b") = sh1.Cells(i, "b")
sh2.Cells(j, "c") = sh1.Cells(i, "c")
j = j + 1
End If
Next i
End Sub
sh2.Cells(j, "c") = sh1.Cells(i, "c")
の部分は項目の数(列数)だけ連ねてください。
Today()はDateのようです。
少数例でテスト済み。Sheet2のA列の書式は日付けにして
下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- その他(Microsoft Office) Excelの関数(FILTER関数)について教えてください 2 2023/07/31 16:11
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで当月の1日を表示するには...
-
ユーザーフォームのラベルに日...
-
今日より前の書き方 マクロ
-
DataGridViewでyyyy/MM/dd
-
エクセルのVBAで日付を検索し転...
-
テキストボックスにカレンダー...
-
VBAで日付入力しているのですが
-
ExcelVBAでSQLサーバの日付時刻...
-
エクセルVBAで機械の稼働時間を...
-
VB6で時刻の範囲に入っているか...
-
VisualBasic6.0のFormat関数で...
-
経過時間を表示したい
-
指定した日付が、その月の第何...
-
VB6.0 のformat関数について
-
ExcelVBAでの日付入力について
-
グーグルフォーム
-
Eclipseの対応する括弧の強調表...
-
【VBA】土日をスキップして日付...
-
VB 日付範囲チェック
-
「eclipseで作るカレンダー(ス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームのラベルに日...
-
エクセルのVBAで日付を検索し転...
-
Eclipseの対応する括弧の強調表...
-
DataGridViewでyyyy/MM/dd
-
VisualBasic6.0のFormat関数で...
-
JSPからYYYYMMDDで日付入力する
-
今日より前の書き方 マクロ
-
3人のじゃんけんのプログラム
-
システム日付とは?
-
【Excel VBA】条件に合った行の...
-
VBA 日付、未来の日付はエラー...
-
【VBA】土日をスキップして日付...
-
VBAで当月の1日を表示するには...
-
「eclipseで作るカレンダー(ス...
-
VBAの質問になります 行の非表示
-
VB 日付範囲チェック
-
コンボボックスに日付を表示する
-
テキストボックスにカレンダー...
-
指定した日付が、その月の第何...
-
VB6.0 のformat関数について
おすすめ情報