2001年1月18日新規作成
  関谷トップページへ トップページへ

No.28 「ExcelVBA 第8章 フォーム(つづき)、第9章 見積書の作成、第10 章グラフ」

2001.1.18 関谷

データフォームについて

 テキストのこの8章では、「ユーザーフォーム」にラベルやテキストボックスなどを一つずつ配置しながら、フォームの採点表を作っている。しかしながら、表(リスト)をクリックしてから《データ》→《フォーム》を使えば、表の伝票形式の [データ フォーム] ダイアログ ボックスが作られる。これを利用したほうが、簡単に伝票形式の表はできてすぐに使える。

  以下に、データフォームとそこでのヘルプをコピーした。 ただし、列の並びを変更した方が良いことや使い方での工夫が必要である。
1)「得点」列に合計得点の計算式を指定しても、「データフォーム」では、ラベルとして扱われ、入力途中では変わらないから、列を移動して[データフォーム」からは外すのが良い。
2)配点の表示は出来ないから、さきに各配点を全セルにコピーしておき、「Tab」キーで採点項目を移動しながら、減点する(Deleteキー)。

[データ フォーム]のヘルプから

 [新規] をクリックして [データ フォーム] ダイアログ ボックスに空白のフィールドを表示し、新規レコードのデータを入力します。Enter キーを押してリストの末尾にレコードを追加します。[閉じる] をクリックし、新規レコードを追加してデータ フォームを閉じます。


8-5 プログラムを作成する

 第8章(つづき)採点用フォームのプログラム作成と評価・設計変更、運用テストと運用を学習する。

8-5-4 「チェックボックスのクリック時」プログラムの作成

8-5-5 「点数テキストボックスの更新時」のプログラムの作成

8-5-6 「データの書き込み」プログラムの作成

8-5-7 「下へ移動ボタンのクリック時」のプログラムの作成

8-5-8 「上へ移動ボタンのクリック時」のプログラムの作成

8-5-9 「閉じるボタンのクリック時」のプログラムの作成

8-5-10 動作の確認

8-6 プログラムを評価して設計を変更する

8-6-1 問題点

8-6-2 解決策

8-6-3 内部仕様の検討

8-6-4 プログラムの修正

8-6-5 動作の確認

8-7 システムを仕上げて運用する

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であった。

8-8 練習問題 Q12 採点用フォームで20項目まで採点可能なフォームに変更する

フォームの使い勝手で見ると、p.197のフォームよりも、p.153のフォームが良い。
1)ラベルを減らしている。
2)チェックボックスのCaptionを、採点項目名に変えている。

これだけ、たくさんのコントロールを使うときには、コントロールを配列にできると、読み込みや書き込みプロシージャがループを使えて短くなる。VBではコントロールを同じオブジェクト名にすると、自動的に配列にしてindex(添え字)を0,1,2・・・に付けてくれるようになっている。残念ながら、VBAでは、プロパティを見てもindexが無いので、使えない。