中学生になって,陸上部に入ったかずは,毎日暑い中を走りまくり,どっちが表で裏かわからないほどに日焼けしている。

 いやいや,これが裏だということはすぐわかるのだが,我が家にはめずらしく,すっかり体育会系になったようで,給食は人の分まで食っているらしい。

 部活に慣れ余裕ができたのか, HSPで作っていた使用時間チェッカープログラム(158話参照)を完成させようとプログラムを見直し始めた。しかし,日があきすぎたせいか,たくさん宣言してある変数のそれぞれの目的がわからなくなってしまったようだ。コメントを入れてあっても,プログラミングのスタイルが確立していないと自分のプログラムを見直すことは困難だ。「うーん,わからん」と,かずは変数名とその目的を洗い出そうと,Excelで変数の一覧表を作りはじめた。「おっ,こいつ,まめやな」と様子を見ていたのだが,あきらめるのに多くの時間は必要なかった。

 次に,かずは何かおもしろいものが作れないかとONION softwareのページでHSPの拡張プラグインを調べ出した。しかし,テーマは決めかねたようだ。

 こうしろうと私がDelphiでブラウザを作っていると「僕も,ブラウザ作ろうかな」と聞こえるように呟くので,かずに何か勧めてやるものはないかと考えはじめた。

 たとえば,学校で中学生にプログラミングを教えるとしたら,何を使うだろう。無料でダウンロードして利用できるHSPも,もちろんいいと思う。

 それから,すでにそこにあるもの。学校のPCはWindowsだから,Internet Explorerがバンドルされている。だから,JavaScriptというか,正確に言うとマイクロソフト社が開発したJavaScript互換のJscript言語が使える。スクリプトを書いて,すぐに実行できるので短時間で結果を出しやすい。

 また,WordやExcelもインストールされているので,VBA(Visual Basic for Application)も使うことができる。こちらも覚えやすい言語である。

 実は,かずは小学生のころから,月間カレンダーを作る仕事を母に仰せつかっている。A4用紙横に,手書きで予定を書き込めるカレンダーを毎月Excelで作成している。

 「1日は何曜日だから,・・・」と月初の日を入れ「今月は30日で終わり」と,手動でカレンダーに日を入力し,印刷しているのだ。
 「かず,それExcelのVBA使って自動化すれば」と勧めた。

 8月28日 カレンダー作成を自動化すべくVBAでのプログラミングをはじめた。HSPでのプログラミングは,自力で進められようになっているかずだが,フォームを作って,部品をのせていく開発スタイルや,関数やプロシジャの作り方は知らない。

 フォームにテキストボックスやボタンを配置して,名前やキャプションを設定する方法を説明した。

 年,月を入力して,開始ボタンをクリックするとシート上にカレンダーを展開する予定である。Webサイトで同じようにカレンダーを作成するフリーのソフトを見つけ,参考にしながら,ボタンクリック時の処理を書いていく。

-------------------------------------------------------------------------
 
Private Sub CommandButton1_Click()
 If UserForm1.txt年 = "" Then '年度が未入力なら
  MsgBox ("4桁の西暦を入れて下さい")
  Exit Sub
 End If
 If UserForm1.txt月 = "" Then '月が未入力なら
  MsgBox ("月を入れて下さい")
  Exit Sub
 End If
 If UserForm1.txt年 < 2000 Then '2000年以前が入力されたら
  MsgBox ("2000年以降の西暦を入れて下さい")
  UserForm1.txt年 = ""
  Exit Sub
 End If
 If UserForm1.txt月 < 1 Or UserForm1.txt月 > 12 _
  Then '月に1以下12以上が入力されていたら
  MsgBox ("正しい月を入力してください")
  UserForm1.txt月 = ""
  Exit Sub
 End If
 '処理
End Sub

---------------------------------------------------------------
 年月の入力値をチェックするコードである。IFはEnd Ifで閉じなくてはいけないことが,「なぜ?」だったようだが,「HSPでは,こんなときどう書く?」とHSPと比較すると,「なんとなくわかる」らしい。

 このチェックでは数字以外の文字が入力された場合でもエラーにならず,通ってしまうのだが,細かいことは置いておこう。コメントにしてある「'処理」を考えていく方が,おもしろいはずだから。