家計簿を1年分作っています。
1日分は5列づつで横並びです。
テンプレートを作り、12ヶ月分を複写しました。
F2には、例えば2月には、2023年2月1日のシリアル値:44958が入っています。
テンプレートは、各月31日で作っていますので、小の月や2月の日数を調整しなければなりません。
そこで、以下のVBAを作りましたが、
Sub EOM()
If Day(EOMonth($F$2,0)) = 28 Then
Range("EP1:FC41").EntireColumn.Delete
ElseIf Day(EOMonth($F$2,0)) = 29 Then
Range("EU1:FC41").EntireColumn.Delete
ElseIf Day(EOMonth($F$2,0)) = 30 Then
Range("EZ1:FC41").EntireColumn.Delete
End Sub
ところが、If文とElseif文が赤字になってしまいます。
どこが間違っているのでしょうか。
No.5ベストアンサー
- 回答日時:
以下のようにしてください。
Sub EOM()
If Day(WorksheetFunction.EoMonth(Range("F2"), 0)) = 28 Then
Range("EP1:FC41").EntireColumn.Delete
ElseIf Day(WorksheetFunction.EoMonth(Range("F2"), 0)) = 29 Then
Range("EU1:FC41").EntireColumn.Delete
ElseIf Day(WorksheetFunction.EoMonth(Range("F2"), 0)) = 30 Then
Range("EZ1:FC41").EntireColumn.Delete
End If
End Sub
No.4
- 回答日時:
#1です
ご質問とは関係ない事ですが、表組を想像するに 分岐処理は要らないような気がします
Sub EOM_Test()
Dim n As Integer
n = Day(Application.EoMonth(Range("$F$2"), 0))
Range(Cells(1, n * 5 + 6), Cells(1, "FC")).EntireColumn.Delete
End Sub
とは言え #2様の後半部分の回答を強く支持します
No.2
- 回答日時:
こんにちは
いろいろありますね・・
>If文とElseif文が赤字になってしまいます
赤字になるのは「構文エラー」です。
>EOMonth($F$2,0)
の「$F$2」部分に変数又は数値等が期待されていて、「おかしな文字がある」というエラーだと思います。
仮に、[$F$2」部分を Rangeを示す変数にするか、あるいは面倒なら「"$F$2"」とでもすれば、赤字は消えますけれど、実行時にエラーになります。
そちらは、「EOMonthなる関数はないよ」というエラーですね。
VBAでワークシート関数を使う場合は、WorksheetFunctionとして使う必要があります。
https://learn.microsoft.com/ja-jp/office/vba/api …
月末を得たいのであれば、ワークシート関数ではなくVBAの関数を用いても計算できます。
https://vbabeginner.net/find-number-of-days-in-m …
とはいえ、元のシートが1年分で日付にシリアル値を用いているのなら、シートの日付を+1で計算するようにしておけば済む話のように思われますが、わざわざ「後から削除する」ような方法を取る意味がわかりません。
ご提示のコードでは2月だけですけれど、その調子だと小の月も「31日」を削除しなければならないのでは?
ひとまず、ごく簡単なカレンダーの作成例をご参考までに。
https://exceljoshi.cocoo.co.jp/media/excel-calen …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで列を削除 3 2023/02/01 11:00
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 価格表から単価を呼び...
-
シートAで横に並んだ項目→シー...
-
行数が不規則な一週間ごとの合...
-
ある列、或いは、ある行のセル...
-
エクセルの順位別一覧表の自動...
-
Excel2013のF6キー操作について
-
エクセルで複数のシートにまた...
-
excelの不要な行の削除ができな...
-
Excelが固まってしまった。
-
エクセルで特定の範囲内から小...
-
スマートな関数を教えて下さい。
-
Excel元に戻す方法を教えてくだ...
-
Excelはなんで先頭の0を消すん...
-
【Microsoft Office Excel Comp...
-
4つのパターンを表示するEXACT...
-
[関数について]わかる方教えて...
-
Excel 2019 のピボットテーブル...
-
Excel初心者です。 詳しい方、...
-
関数を教えて下さい。
-
エクセルでチェックボックスを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報