VBAを使って週番号を取得しようと思い、いざググルと、今日が1年のうちの第何週目かを取得するサンプルにヒットすることが多いかと思います。ほしいのは1年でなく、その月の第何週目なんじゃいという方向けに、VBAを活用して指定した日付の月内での週番号を取得する方法を解説していきます。VBAプログラマーはぜひご参考ください。
目次
VBAサンプルコーディング
step
1ボタンを準備します
エクセルの開発タブから挿入をクリックして、ボタンコントロールを適当な箇所に配置します。
step
2作成したボタンで右クリック→マクロの登録をクリック
マクロの名前はご自由に。今回は「button_Click」とします。登録すると、Sub button_Click()という、ボタン押下時の処理が記述できるルーチンが出来上がります。そこにコーディングしていきましょう。
step
3下記のVBAを参考にしてコーディング
ポイントは、DatePart関数を使用するところです。DatePart("WW", wkdate, vbSunday)で週数を取得できます。第3引数に週の始まりを何曜日にするかの設定が可能で、vbSundayはVBA標準の定数です。
月の週番号を取得する箇所はコピペで大丈夫です。日付だけ変数を割り当てるように適宜修正しましょう。
ここでは日付をD列2行目に入力して、取得できた月の週番号はD列4行目に設定する仕様とします。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub button_Click() Dim lngWeekNum As Long Dim wkdate As Date wkdate = Range("D2").Value '月の週番号を取得 lngWeekNum = DatePart("WW", wkdate, vbSunday) - DatePart("WW", DateSerial(Year(wkdate), Month(wkdate), 1), vbSunday) + 1 Cells(4, 4).Value = lngWeekNum End Sub |
ボタンを実行してデータを取得
step
4作成したボタンをクリック
それでは早速日付を設定して、用意したボタンを押下してみましょう。今回は何もエラーハンドリングのコーディングはしていませんので、日付を設定しないでボタンを押下しても期待通りの結果は返ってきませんよ。
step
5実行結果
日付「2020/11/25」に対する月の週番号「4」が設定されていることが確認できました。
まとめ
今回はVBAを使用してのサンプルコーディングを行いましたが、VB.NETでももちろん使えます。C#はこのやり方だと無理かな・・・
DatePart関数って確かMicrosoft.VisualBasic用だったと思うので、C#では別のやり方を考える必要があるかと思います。
最後までお読みいただきありがとうございました。