Excel VBAでカレンダー作成
僕は普段はc++を使って競技プログラミングなるものをしています.
たまにPHPやjavascriptやHTML,SQL,CSS等を使ってwebで動くものも作ったりしますが,普段はあまり多くの言語を使いません.
しかし,今回Excel VBAを使って1ヶ月分のチェックリストを作らなくてはならない用事が出来たのでExcel VBAの使い方も含めてメモ.(全然使わないのでほんと初心者レベル)
作りたいものはこんなの.(デザインに関しては許して)
仕様としては
- B1, B2セルで好きな年,月を指定できる
- 休日のデフォルトは土日で赤く塗りつぶす
- しかし土日が休日で無い場合や平日が休日などのイレギュラーにも対応出来るようにする
大体こんな感じ
例えば2016年8月の時普通の土日休みに加えてお盆休みも欲しいって鳴った場合,左側の休日一覧に15,16を加えてmakeボタンを押せばok
はい,いちいち自分でマウスでこちょこちょしなくて済むので便利ですね.
それでは以下実装↓
実装について軽く説明すると
8行目,9行目でシートの年と月を持ってくる
10行目でその月の日数を貰ってくる(ちゃんと閏年の2月は29日になってくれるヨ)
16行目以降その月の日数分だけループしながらシートに日付を入れてカレンダーを作っていく
ついでに19行目のWeekday()というものを使って土日の日付をシートの左側の休日一覧に入れていく
27行目以降シートの左側の休日の日付を拾ってきてカレンダーに色をつけていく
36行目以降はカレンダーの日付と色,シートの左側の休日一覧を全てクリア
VBAを書くエディタは「Alt+F11」でひらけるみたい.
こんな画面が出てくる.
そしたら挿入→標準モジュールをクリックするとエディタが出てくるのでここにVBAをゴリゴリ書いていく
実際のエディタの方ではこんな感じでプロシージャ毎に横線が自動的に引かれるみたい
あとはファイル→オプション→リボンのユーザ設定→開発にチェックを入れて
開発タブ→挿入→ボタン(フォームコントロール)でボタンを作ってそのボタンに先ほど作ったプロシージャを割り当てればok
ちなみに今回はマクロを使っているので保存するときは
拡張子を.xlsmにしないとダメ
もっとソースが簡単に書けるよだとかここ詳しく教えて等コメントあったらぜひお願いします.