雑記・まとめ

個人的な備忘録

Excel VBAでカレンダー作成

僕は普段はc++を使って競技プログラミングなるものをしています.

たまにPHPjavascriptやHTML,SQL,CSS等を使ってwebで動くものも作ったりしますが,普段はあまり多くの言語を使いません.

 

しかし,今回Excel VBAを使って1ヶ月分のチェックリストを作らなくてはならない用事が出来たのでExcel VBAの使い方も含めてメモ.(全然使わないのでほんと初心者レベル)

 

 

作りたいものはこんなの.(デザインに関しては許して)

f:id:tanukistune:20160801124608p:plain

 

仕様としては

  • B1, B2セルで好きな年,月を指定できる
  • 休日のデフォルトは土日で赤く塗りつぶす
  • しかし土日が休日で無い場合や平日が休日などのイレギュラーにも対応出来るようにする

大体こんな感じ

 

 

例えば2016年8月の時普通の土日休みに加えてお盆休みも欲しいって鳴った場合,左側の休日一覧に15,16を加えてmakeボタンを押せばok

f:id:tanukistune:20160801125046p:plain

はい,いちいち自分でマウスでこちょこちょしなくて済むので便利ですね.

 

 

それでは以下実装↓

 

実装について軽く説明すると

8行目,9行目でシートの年と月を持ってくる

10行目でその月の日数を貰ってくる(ちゃんと閏年の2月は29日になってくれるヨ)

16行目以降その月の日数分だけループしながらシートに日付を入れてカレンダーを作っていく

ついでに19行目のWeekday()というものを使って土日の日付をシートの左側の休日一覧に入れていく

27行目以降シートの左側の休日の日付を拾ってきてカレンダーに色をつけていく

36行目以降はカレンダーの日付と色,シートの左側の休日一覧を全てクリア

 

 

VBAを書くエディタは「Alt+F11」でひらけるみたい.

f:id:tanukistune:20160801130016p:plain

こんな画面が出てくる.

 

 

そしたら挿入→標準モジュールをクリックするとエディタが出てくるのでここにVBAをゴリゴリ書いていく

f:id:tanukistune:20160801130034p:plain

 

 

実際のエディタの方ではこんな感じでプロシージャ毎に横線が自動的に引かれるみたい

f:id:tanukistune:20160801130621p:plain

 

 

あとはファイル→オプション→リボンのユーザ設定→開発にチェックを入れて

f:id:tanukistune:20160801130903p:plain

f:id:tanukistune:20160801131006p:plain

 

 

開発タブ→挿入→ボタン(フォームコントロール)でボタンを作ってそのボタンに先ほど作ったプロシージャを割り当てればok

 

f:id:tanukistune:20160801131126p:plain

 

 

ちなみに今回はマクロを使っているので保存するときは

f:id:tanukistune:20160801133307p:plain

拡張子を.xlsmにしないとダメ

 

 

 

もっとソースが簡単に書けるよだとかここ詳しく教えて等コメントあったらぜひお願いします.