入力フォームのデータをエクセルシートに書込み

ここで事例として試験の採点結果をエクセルの表に書き込むことを想定して話を進めて行きます。
入力作業の方法によりプログラムの組み方が変わります。入力作業の方法には次の2通りの方法があるのではないかと思います。
第一の方法:
 答案用紙(数学、国語、英語)が全部揃ったところでをまとめて入力を行なう。
第二の方法:
 各科目の採点を終えたところで、その都度入力をおこなう。
第一の方法の場合は、簡単なプログラムを作成するだけで済みます。
 この場合には、数学、国語、英語のすべての採点結果が出るまで待っていなければならず、答案用紙を学生別に仕分けして入力を行なわなければないとの制約 があります。
従って、第二の入力作業の流れが制約もなくベストかと考えます。
その為には採点者(不特定多数の方)が入力を行えるようなプログラムとする必要があります。
今から簡単な第一の作業の流れでのプログラムを作成致します。その後第二の方法とした場合のプログラムの追加を行なって行きたいと考えます。
では最初に第一の流れの入力作業の場合のプログラムを組んで行きましょう。
1.第一の入力作業の場合
1)「入力開始」ボタンのプロシージャの表示
 最初に入力日時をテキストボックスに入力することにしていますが、何月何日何時何分と手入力するのも大変なのでパソコンの現在の時刻を書き込ませるよう に時刻の関数「Now()」を使用します。
プログラムを書くのは「ボタン1(入力開始)」のプロシージャに書きます。
①プロシージャの表示:
 入力開始ボタンを右クリックし、メニューの「マクロの登録」をクリックします。
図1
 マクロの登録画面が表示されますので右側の「編集」ボタンをクリックします。図2
【参考】「編集」は最初「新規」で表示されていましたが、その後は「編集」に変わります。
 ボタン1のプロシージャ画面が表示されます。図3
2)「入力日時」の書込み:
 最初に入力日時をテキストボックスに入力することにしていますが、何月何日何時何分と手入力するのも大変なのでパソコンの現在の時刻を書き込ませるよう に時刻の関数「Now()」を使用します。
プログラムを書くのは「ボタン1(入力開始)」のプロシージャに書きます。
ユーザーフォームを表示させるプログラムの前に、「ユーザーフォーム1のテキストボックス1のValueに現在の時刻(Now())を代入しなさい」と書 きます。
ここで気をつけて頂きたいのは、現在はユーザーフォームは一つですが、今後ユーザーフォームは多数挿入されます。
そのためTextBox1はどのユーザーフォームにも存在しますので頭にどのユーザーフォームか分かるように指示しなければなりません。
そのため「ユーザーフォーム1のテキストボックス1」と指示します。図4
テキストボックス1は、プログラムで書き込むようにしましたのでカーソルをこのテキストボックス移動させる必要がなくなりました。
プロパティの「TabStop」を「True」より「False」に変更します。
図7
また入力作業者にここには入力が必要ないと分かるように「BackColor」で色つけしていた方が親切でしょう。
ここでは薄青に設定しました。
図8
 エクセルに戻り「入力開始」ボタンをクリックして入力フォームを表示させてみましょう。
 テキストボックス1に現在のパソコンの時刻が入力されているのが分かるかと思います。
 その状態で採点月、学生名などを適当に入力してみてください。図5
 「中止・終了」ボタンでユーザーフォームを一度非表示にし、「入力開始」ボタンで再度表示させて見てください。
前に書き込んだ採点月、学生名などがそのまま残っています。
ユーザーフォームを表示させたときにはこれらの前に入力されたデータを消去(リセット)させておく必要があります。
そこでユーザーフォームを表示させる時に、これらの前のデータを消去させるようにしましょう。
3)ユーザーフォーム上の各コントロールのリセット(消去):
 リセット(消去)は、それぞれのテキストボックスの「Value」を空白(""(ダ ブルクオーテーション))にさせます。
例えば、採点月のテキストボックス2の場合、「UserForm1.TextBox2.value=""」を「入力開始」ボタンのプロシージャに書き込め ば良いこととなります。
図6
確認してみましょう。
「入力開始」ボタンで入力フォームを表示させ、採点月、学生名など書き込んで「中止・終了」ボタンで非表示とさせます。
再度「入力開始」ボタンで入力フォームを表示させると今度はテキストボックスに書き込まれていた文字が消去されているのが分かるでしょう。
また「中止・終了」ボタンの外周部に破線が表示されているのが分かるかと思います。
図9
「Tab」が「中止・終了」ボタンに止まっていることを示しています。
その為どのテキストボックにもカーソルが表示されていません。
この状態で書込みを行なおうとした場合、マウスで書込みの採点月のテキストボックス選択しなければなりません。
そこで入力開始ボタンをクリックして入力フォームを表示させた時にカーソルが採点月(テキストボック ス2)に表示するよう設定します。
4)初期のカーソルの位置の設定:
 その指示命令語は「SetForcus」を使用し、「ユーザーフォーム1のテキス トボックス2にセットフォーカスさせなさい」とします。
そのプログラムを「入力開始」ボタンのプロシージャに次のように書き込みます。図10
「入力開始」ボタンでフォームを表示させるとテキストボックス2にカーソルが表示されているのがわかるでしょう。
図11

次にエクセルシートへの書込みのプログラム作成しましょう。
 
次ページへ

サイドバータイトル
inserted by FC2 system