
Windows 7 SP1 + Excel 2013での問題です。
ある月が4週あるのか5週あるのかで条件分岐をさせたいので、
Weeknum関数を使って、下記のような判定(実際にはNenとTukiはポップアップを表示させて入力させています)をさせることを考えました。下記の判定の前後のコードまでいちおうコーディングしたうえで、F8キーでデバッグを開始したところ、WeekNumにフォーカスがあたった状態で、
「コンパイルエラー:SubまたはFunctionが定義されていません」と表示され、エラーになります。
この判定に使っている関数(Weeknum)がExcel2013でサポートされていることは
確認済みです(*1)。
なぜこのようなことになるのでしょうか。
≪判定≫
Nen = 2020
Tuki = 1
WeekCnt = WeekNum(DateSerial(Nen, Tuki + 1, 0))
(*1)https://support.office.com/ja-jp/article/weeknum …
No.1ベストアンサー
- 回答日時:
こんにちは
VBAでは、ワークシート関数がそのまま使えるわけではありません。
とは言え、多くの関数が利用できるようにはなっています。
詳細を確認する場合はワークシート関数のリファレンスではなく、VBAのリファレンスを参考にするようにしてください。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
利用する際には、WorksheetFunctionオブジェクトのメソッドとして使うことになります。
具体的には、
WeekCnt = WorksheetFunction.WeekNum(DateSerial(Nen, Tuki + 1, 0))
といった感じです。
No.4
- 回答日時:
>ある月が4週あるのか5週あるのかで条件分岐をさせたいので、
この質問の求める起点が合っているのか分からないのですが、WeekNum関数を使っているところから、このようになるのではないかと思いました。Weekdayでしたら、両方の最初と最後の週の数の曜日の補数を補完して、その差を7で割ると考えました。間違っていたらすみません。
'//
Sub Test1()
Dim Nen As Long, Tuki As Long
Dim Fd As Date '1日
Dim Ld As Date '月末日 Latest Day of Month
Dim WeekCnt As Long First Day of Month
Nen = 2020
Tuki = 2
Fd = DateSerial(Nen, Tuki, 1)
Ld = DateSerial(Nen, Tuki + 1, 0)
With WorksheetFunction
WeekCnt = .WeekNum(Ld) - .WeekNum(Fd) + 1
End With
'' WeekCnt2 = ((Ld + 7 - Weekday(Ld, vbSunday)) - (Fd + 1 - Weekday(Fd, vbSunday)) + 1) / 7 'ワークシート関数を使わない場合
End Sub
No.3
- 回答日時:
直接質問への回答ではありません
カレンダーなどの作成のための週数を求めているのでしょうか?
もしそうならば4週~6週になります。
単純に週数を調べるなら月末の日付を7で割って端数をカットすれば良いような気がします。その場合はうるう年で無い2月のみが4週、他は全て5週です。
No.2
- 回答日時:
単に「WorksheetFunction」を付け忘れているだけでは?
Nen = 2020
Tuki = 1
WeekCnt = WorksheetFunction.WeekNum(DateSerial(Nen, Tuki + 1, 0))
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) Excel複数シートから日付と文字を取り出して日付順に並べたいです 6 2022/06/06 13:23
- Windows 10 プロファイルエラーについて 2 2022/12/16 09:31
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急です! 河合塾の共通テスト...
-
6月の共テ模試が6割しか取れな...
-
模試で科目不足の判定になって...
-
九大機械系の前期と九工大後期...
-
模試の結果が返って来て教科の...
-
模試をすっぽかした
-
奈良女子大か大阪教育大か
-
東大理ⅢA判定が文転して文Ⅰに進...
-
模試の判定のばらけ、について。
-
今まで色々とあり、受験勉強を...
-
CAD利用技術者1級試験に使える...
-
国立大学の後期試験を、愛媛大...
-
無職ニート判定される回答者の特徴
-
北海道大学 理学部 生物科学科...
-
大学受験 模試を受けたときに大...
-
リアルガチで早慶A判定なら東大...
-
東進の東大レベル本番模試
-
模試の結果が酷いです
-
センター合計80%で 神戸大学法...
-
PLSQLのCASE文でNULLを評価する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
6月の共テ模試が6割しか取れな...
-
河合塾で浪人してる者ですが、...
-
九大機械系の前期と九工大後期...
-
奈良女子大か大阪教育大か
-
ある病原菌を検出する検査法に...
-
私大共通テスト利用でB判定って...
-
中身がFALSEなのにTRUEになる
-
模試の結果が返って来て教科の...
-
受信メールの件名の直前に SPAM...
-
至急です! 河合塾の共通テスト...
-
11月の時点でC判定での合格はむ...
-
ベネッセ実力判定テストについて
-
共通テストで大失敗しました。
-
模試をすっぽかした
-
恒等式と方程式の見分け方が分...
-
大学出願を信州大の物質科学か...
-
高3の進研模試について質問です...
-
模試で科目不足の判定になって...
-
武蔵大学の評判を教えて下さい...
-
阪大実戦、まさかのD判定でした...
おすすめ情報