入力作業の流れの見直し

好きなときに、好きな科目の採点結果の入力を行なっても対応できるように修正を行ないます。
これからは学生名の指定は、このままリストボックスを使用します。
現在のプログラムで は、最初に数学のみ入力を行い、その後新たに国語を入力実施、その後に英語と個別に入力を行なうと下図のようになります。図1
このようにエクセルに書き込まれては役立ちません。
このようなイレギュラーな入力作業に対応できるようプログラムを修正しましょう。
1.リストボックス1-クリックのプロシージャに追加修正を行なう。
 リストボックス1を右クリックし、メニューの「コードの表示」をクリックするとクリックのプロシージャが表示されます。
テキストボックス2に書き込まれた採点月(月分)にリストボックスで指定した学生名が存在するか検索させます。
存在すれば既に表に書き込まれているデータを数学、国語、英語、及び備考を各テキス トボックスに読み込ませるようにします。
検索結果、学生名が見当たらなければなにも行なう必要はありません。
リストボックスのプロシージャに以下のように書込みましょう。
図2
改行マークのアンダーバーは既に説明しておりますので説明は省略します。
「ElseIf Val(TextBox2.Value)= Cells・・・・・・・・・・・・・・Then」:
①「Val」は、文字を数値に変換する関数:
 TextBox2.Valueに書き込まれている数値は文字としてしか認識されません。それに反してエクセルに書き込まれている文字は数値です。
「文字」と「数値」では照合できませんのでテキストボックス2に書き込まれた文字を数値に変換しています。
②「ElseIf ・・・・・And ・・・・・Then」の意味は:
 「もしテキストボックス2の値と採点月(月分)の列の値が同じで、かつ(And) 学 生名(リストボックス1の値)と学生名の列の値が同じならば、その下に書かれたプログラムを実行しなさい」となります。
2.実際に読み込むか確認してみましょう。
1)下図のようにデータを入力しておきます。図3
2)次に再度入力フォームを表示させ採点月を「3」にして既に書き込んでいる名前を選択します。
リストボックス名前をクリックした時点でこのプログラムが実行され、それぞれの数学の点数、備考のデータが読み込まれます。
図4
3)まだ入力されていない国語、英語に点数を書き込みます。
3.最後に国語、英語を入力したものを「書込み」ボタンをクリックしてエクセルに書き込ませます。
「書込み」のコマンドボタンのプロシージャに書き込まれているプログラムを追記修正します。
プログラムの流れとしては、前述したリストボックスと同様に「採点月」と「学生名」が既にエクセルに書き込まれた表に無いか検索します。
無ければ新たに表の末尾(空白)に書き込ませます。
採点月と学生名があれば、その行に上書きさせます。
1)書込みコマンドボタンのプロシージャを表示させます。
2)追記の範囲を書込みます。図5
実行状況を確認してみましょう。図6
エクセルへの書込み結果はつぎのようになるかと思います。
この場合は上記プログラムの「 ElseIf Val(TextBox2.Value) = Cells(5+n, 3).Value And ListBox1.Value=Cells(5+n, 4).Value Then 」の条件に合致し行に書き込まれています。
図7
この表に名前のない人で例えば「杉田」で試してみましょう。
図8
この場合は上記プログラムの「If Cells(5+n, 2).Value="" Then」の条件に合致しますので、表の末尾の空白の行に書き込まれています。
以上で第二の入力作業の流れに対応させるためのプログラムの説明を終わります。
コンボボックスを使用されたい方は「コンボボックス1_クリック」のプロシージャに同様なプログラム書くだけです。
ここで学生名のテキストボックスが目障りなので配置を換えておきます。図10
【参考】ユーザーフォーム上のコントロールの削除時の注意:
学 生名を書き込むテキストボックス3は、リストボックス又はコンボボックスに変えたので、テキストボックス3は不要で削除する場合には、テキストボックスを 右クリックしメニューの「削除」で削除することは可能です。但し、この後でテキストボックス3を使用しますので削除しないでください。
プログラムを書いた後でコントロールを削除した場合には、そのコントロール名が使用されたプログラムを消す必要があります。
例えば、「数学」のテキストボックス4を削除した場合、プログラムを実行すると下記のようなデバッグ表示されますので、「OK」をクリックして、この行を 削除し「リセット」します。
図11
ここまでは「採点表」のシートに全員の学生の採点結果の書込みプログラムは終了です。
ここからは各学生別のシートを作成し、学生の成績の進捗状況が分かるように学生別シートに書込みを行なわせましょう。
  
次ページへ

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