
家計簿を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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LibreOffice Clalc(またはエク...
-
【マクロ】excelファイルを開く...
-
【関数】3つのセルの中で最新...
-
【マクロ】数式を入力したい。...
-
Office2021のエクセルで米国株...
-
エクセルのリストについて
-
【マクロ】【相談】Excelブック...
-
【マクロ】元データと同じお客...
-
【画像あり】オートフィルター...
-
エクセルの関数について
-
【マクロ】左のブックと右のブ...
-
他のシートの検索
-
【マクロ】実行時エラー '424':...
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【マクロ】【配列】3つのシー...
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ画像あり】❶1つの条件...
-
エクセルの複雑なシフト表から...
-
【マクロ】変数に入れるコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報