家計簿を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ランキング
-
エクセル 文字を増やしたい。
-
エクセルの計算
-
セルの内容表示が邪魔になる
-
Excel
-
Microsoft365に変えたのですが...
-
エクセル:一覧表に存在する文...
-
エクセルで日付を数字+アルフ...
-
エクセルでの作業計算方法について
-
エクセルで年休を管理する方法...
-
はがきについて。
-
【マクロ】その時、その時で変...
-
excelの不要な行の削除ができな...
-
Microsoft1Officeの互換ソフト...
-
エクセル関数を教えてください
-
Excel ピボットテーブルで日付...
-
【マクロ】読取専用のファイル...
-
【関数】適切な文字数の数字を...
-
時間によってファイル名が変わ...
-
ある列、或いは、ある行のセル...
-
UNIQUE関数が使えないバージョ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報