テキストのこの8章では、「ユーザーフォーム」にラベルやテキストボックスなどを一つずつ配置しながら、フォームの採点表を作っている。しかしながら、表(リスト)をクリックしてから《データ》→《フォーム》を使えば、表の伝票形式の [データ フォーム] ダイアログ ボックスが作られる。これを利用したほうが、簡単に伝票形式の表はできてすぐに使える。
以下に、データフォームとそこでのヘルプをコピーした。
ただし、列の並びを変更した方が良いことや使い方での工夫が必要である。
1)「得点」列に合計得点の計算式を指定しても、「データフォーム」では、ラベルとして扱われ、入力途中では変わらないから、列を移動して[データフォーム」からは外すのが良い。
2)配点の表示は出来ないから、さきに各配点を全セルにコピーしておき、「Tab」キーで採点項目を移動しながら、減点する(Deleteキー)。
[新規] をクリックして [データ フォーム] ダイアログ ボックスに空白のフィールドを表示し、新規レコードのデータを入力します。Enter キーを押してリストの末尾にレコードを追加します。[閉じる] をクリックし、新規レコードを追加してデータ フォームを閉じます。
第8章(つづき)採点用フォームのプログラム作成と評価・設計変更、運用テストと運用を学習する。
8-7-2 プログラムの修正と確認:コードの追加で、コンパイルではエラーにならず、実行でエラーになる場合、デバッグでのエラー文(黄色の行)ではなく、そのオブジェクトに含まれるものがエラーのときが多い。(変更時のエラー)
例) 採点用フォーム.Showがエラーの原因は、例えば、
Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
b1.Caption = Sheets("管理シート").Range(・・・
この下線部のオブジェクト名は、lb1が正しい。
(変数名・オブジェクト名のエラーが、実行時にしか分からないため。)
この場合のデバッグは、「ステップモード」で、変更したプロシージャを行ごとに順番に実行するとエラーの行が分かる。(テキストのp.111-112参照)
8-7-3 運用テスト:「採点用フォームを開く」ボタンをクリックし、execlのアイコンがタスクバーで点滅しないとき、このアイコンをクリックしてもワークシートも元のサイズに戻る。
原因はよく分からないが、ツール-オプション-《表示》タブの表示グループの
□Windowをタスクバーに表示として、テストしたら、点滅するようになったりしている。その後は、チェックを入れてもOKであった。
フォームの使い勝手で見ると、p.197のフォームよりも、p.153のフォームが良い。
1)ラベルを減らしている。
2)チェックボックスのCaptionを、採点項目名に変えている。
これだけ、たくさんのコントロールを使うときには、コントロールを配列にできると、読み込みや書き込みプロシージャがループを使えて短くなる。VBではコントロールを同じオブジェクト名にすると、自動的に配列にしてindex(添え字)を0,1,2・・・に付けてくれるようになっている。残念ながら、VBAでは、プロパティを見てもindexが無いので、使えない。