
月の集計の表を作っています。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBAでWorkbook.addの使い方
Visual Basic(VBA)
-
VBA 最終行まで数式をコピーする
Visual Basic(VBA)
-
このマクロの説明文を教えてほしいです。
Visual Basic(VBA)
-
-
4
VBAプログラム初心者です。 以下の問題のプログラムを表記してみたのですが、実行するためには、どこを
Visual Basic(VBA)
-
5
Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日
Visual Basic(VBA)
-
6
【VBAエラー】Nextに対するForがありません 対策について
Visual Basic(VBA)
-
7
ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています
Visual Basic(VBA)
-
8
なぜこんな初歩的なVBAのIf文でエラーか発生して使えないのか、全く理解出来ません。誰か助けてくださ
Visual Basic(VBA)
-
9
エクセルVBAで教えて頂きたいのですが?
Visual Basic(VBA)
-
10
特定の文字を条件に指定範囲のデータを貼り付けるVBA
Visual Basic(VBA)
-
11
Excel-VBAでのファイルの開き方
Visual Basic(VBA)
-
12
VBA EOMonthについて
Excel(エクセル)
-
13
なぜExit Subがあるのかわかりません
Excel(エクセル)
-
14
エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて?
Visual Basic(VBA)
-
15
エクセル VBA 難しいです
Visual Basic(VBA)
-
16
VBAについて教えてください
Visual Basic(VBA)
-
17
マクロ初心者の質問です。 1.シートを開いてマクロを実行する場合、アクセスキーでAlt-L-PMとタ
Visual Basic(VBA)
-
18
いつもお世話になります 下記のコード実行すると エラーになります わかるかた教えてくれませんでしょう
Visual Basic(VBA)
-
19
エクセルデータ。容量を減らすにはどうしたらいい?
Excel(エクセル)
-
20
WordのVBAについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
日付だけを変更して印刷(Excel)
-
5
エクセルで数字列の間に『/』を...
-
6
日付入力→指定のセルの色を塗り...
-
7
WORDで翌日や翌々日の日付を表...
-
8
☆Excelエクセルで入力した日の...
-
9
エクセル関数で日付かどうかの...
-
10
Excelで、年だけの「西暦」から...
-
11
エクセルで日付を別のシートに...
-
12
ファイルのオープン時に今日の...
-
13
EXCELで直近の日付を抽出する関数
-
14
Excelで更新日時と更新者を表示...
-
15
エクセルで日付を入力するとき...
-
16
Excelに入力した個々の日付の数...
-
17
Excelで8/26等の日付を全てその...
-
18
エクセルのセルにカレンダーを...
-
19
エクセル グラフ 軸の日付表記...
-
20
エクセル 当番表の作り方 エク...
おすすめ情報
公式facebook
公式twitter