月の集計の表を作っています。
31日分の列(複数列から構成)をテンプレートにしているため、
各セルに日付を入れていくと、小の月の末に次の月の日付が入ってしまいます。
次月の日付が表示される列自体が削除されるよう、以下のように書いてみました。
当然でしょうが、エラーになりました。
F2セルにはシリアル値を入れました。
ご教示お願いします。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Sub deleteAfterEOM()
'28のとき
If Day(EoMonth(Range("F2"))) = Range("EK1") Then
Range("EP1:FC41").EntireColumn.delete
'29のとき
ElseIf Day(EoMonth(Range("F2"))) = Range("EP1") Then
Range("EU1:FC14").EntireColumn.delete
'30のとき
ElseIf Day(EoMonthRange(("F2"))) = Range("EU1") Then
Range("EZ1:FC14").EntireColumn.delete
End Sub
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
No.3ベストアンサー
- 回答日時:
ワークシート関数の「EoMonth」に手がかりを掴んでいたようでしたので、
こちらを使うようにすると・・・
先の回答に書いた 「EOM = 」の行をこちらに置き換えて見てください。
EOM = Day(Application.WorksheetFunction.EoMonth(Range("F2"), 0))
WorksheetFunction ワークシート関数の・・・
EoMonth を使います。
という具合にちょっと特殊な書き方になります。
ありがとうございます。
EoMonthと唐突に書いてもダメなんですね。
Application…から指定してやらないと辿れないとわかりました。
No.2
- 回答日時:
F2には今日の日付か何かが入ってるんですよね?
質問内容に書かれてた、ご自身で考えられた内容を完全無視でつくってみました。
お試しください。
処理では、削除ではなく「削除対象を選択状態」としています。
実際に動作を確認してみて、問題が無いようでしたら、
「.Select」 → 「.Delete」
と書き換えてください。
Sub deleteAfterEOM()
'EOM に F2の月の最終日を入れます
Dim EOM As Long
EOM = Day(DateSerial(Year(Range("F2")), Month(Range("F2")) + 1, 0))
'29日 EP列 は Colunm146
'30日 EU列 は Colunm151
'31日 EK列 は Colunm156
'月末日以降に消す先頭列は以下の式になる
' 161 - ( 31 - [月末日] )×5
'削除最終列 FC列 は Column159
'なので・・・
If EOM < 31 Then
Range(Columns(161 - (31 - EOM) * 5), Columns(159)).Select
End If
End Sub
No.1
- 回答日時:
すみません。
'28のとき
If Day(EoMonth(Range("F2"))) = Range("EK1") Then
の文を日本語で説明していただけませんでしょうか。
EK1には、どのような値が設定されていますか。
F2にはシリアル日付ということですが、F2がどのような値で、
EK1がどのような値の時、この条件が成立しますか?
"f2"はその月の1日のシリアル値を入れてあります。
読み下すと、「もし、シリアル値で入れた日を含む月の月末日と、EK1(28という数値が入っているセル)が同じ値なら」という意味で書いたんですけど…。
あまり基本を勉強はしていませんので、文法やら間違っていると思います。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA EOMonthについて 5 2023/02/10 11:51
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付だけを変更して印刷(Excel)
-
入力後に日付順になるように自...
-
31:30:00が1900/1/1 7:30:0
-
西暦や和暦の表示をyyyymmdd表...
-
Excelで、年だけの「西暦」から...
-
エクセルで数字列の間に『/』を...
-
エクセル 当番表の作り方 エク...
-
エクセルのセルにカレンダーを...
-
Excelで半年後の日付を計算したい
-
エクセル関数で日付かどうかの...
-
VBAでセルに入っている日付をシ...
-
エクセルでENTERを押すと数式が...
-
EXCELで直近の日付を抽出する関数
-
日付入力→指定のセルの色を塗り...
-
エクセルのセルにたとえば「756...
-
ファイルのオープン時に今日の...
-
日付を入力したセルをファイル...
-
Excelで8/26等の日付を全てその...
-
エクセル 平日のみ連絡印刷
-
WORDで翌日や翌々日の日付を表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
31:30:00が1900/1/1 7:30:0
-
入力後に日付順になるように自...
-
日付だけを変更して印刷(Excel)
-
Excelで半年後の日付を計算したい
-
エクセルでENTERを押すと数式が...
-
エクセル 当番表の作り方 エク...
-
エクセルで数字列の間に『/』を...
-
エクセル関数で日付かどうかの...
-
Excelで、年だけの「西暦」から...
-
エクセルのセルにカレンダーを...
-
日付入力→指定のセルの色を塗り...
-
☆Excelエクセルで入力した日の...
-
Excelで8/26等の日付を全てその...
-
◆ EXCEL自動入力日付を自動で...
-
ファイルのオープン時に今日の...
-
Excelで、本日、前日、1週間前...
-
EXCELで直近の日付を抽出する関数
-
エクセルで日付入力欄を作成し...
-
エクセルで、曜日から日付を呼...
-
エクセルで1年後の月末を表示さ...
おすすめ情報