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も見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
模試の結果が返って来て教科の...
-
河合模試である大学がB判定でし...
-
ある病原菌を検出する検査法に...
-
模擬試験で、志望校が学部内で5...
-
志望校の判定が河合塾では、A判...
-
7月に受けた模試でC判定だった...
-
模試では最後までE判定でも受か...
-
共通テストで大失敗しました。
-
模試で科目不足の判定になって...
-
高3
-
6月の共テ模試が6割しか取れな...
-
新潟大学の二次試験の難易度に...
-
阪大実戦、まさかのD判定でした...
-
進研模試のD判定はどのくらいの...
-
志望校を担任に伝えて、調査書...
-
九大機械系の前期と九工大後期...
-
大学受験について
-
VBA マウスクリックとキーボー...
-
私大文系志望の高3です。 6月...
-
大学出願を信州大の物質科学か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
模試で科目不足の判定になって...
-
至急です! 河合塾の共通テスト...
-
模試の結果が返って来て教科の...
-
共通テストで大失敗しました。
-
明治大学の全学部は英検利用で...
-
【医学・人間ドッグは詐欺?】...
-
九大機械系の前期と九工大後期...
-
第一志望の国公立大学がC判定で...
-
阪大実戦、まさかのD判定でした...
-
模擬試験で、志望校が学部内で5...
-
武蔵大学の評判を教えて下さい...
-
模試の結果が酷いです
-
埼玉大学経済学部のオススメの...
-
恒等式と方程式の見分け方が分...
-
私大共通テスト利用でB判定って...
-
ある病原菌を検出する検査法に...
-
中身がFALSEなのにTRUEになる
-
マナビジョンの進研模試は私立...
-
高2で結構難易度高めの国公立志...
-
7月に受けた模試でC判定だった...
おすすめ情報