他のシートへの書込み方法

今までは、採点表シートへの書込み方法を説明して参りましたが、ここでは採点結果入力フォームのデータを他のシート(個人別シート)への転送の方法 を説明致します。
1.各学生のシートを作成します。図1
2.「採点表」のシートから他のシートに書き込ませるためにはどのシートに書き込ませるかシート名を指定しなければなりません。
何故「採点表」シートのセルは指定しないので良いかと言いますと、「採点結果入力フォーム」がこの「採点表」シート上で実行されているため省略することが できます。
マクロではシート名の指定は、「WorkSheets("シート名")」で指定しま す。そのシート内のセルの指定は「WorkSheets("シート名").Cells(行番号,列 番号)」となります。
ここで問題なのは入力フォームで入力される学生名はその都度変わりますので、その都度シート名をかえる必要があります。そのためシート名を固定することは できません。
その対策としてシート名を学生名と完全に一致した名前にしています。学生名は「ListBox1.Value」ですので、シート名はこの 「ListBox1.Value」で指定することができます。
従ってプログラム内でのシート名の設定は、WorkSheets(ListBox1.Value)と しておけば良いことになります。
このように学生名とシート名を常に一致させておく必要があるかと言いますと他のシート名でも対処の仕方があります。その方法については後述いたします。
3.シート名の設定方法が分かれば、後は採点表に書き込むのと同じ方法です。
1)「書込み」のコマンドボタンのプロシージャ画面を表示させます。
2)個別学生名のシートへの書込みプログラムを追記します。
 採点表のシートの表と学生のシートの表は今回は全く同じ様式にしていますのでセルの行番号、列番号の書換えは不要です。
採点表の書込みプログラムをそのままコピーし、貼り付けます。
コピーの仕方は前に説明しましたようにコピーしたいところまでドラッグし選択します。
図2
3)「学生シートへの書込み」のコメントの下に貼り付けます。図3
4)「学生シートへの書込み」の下に貼り付けたプログラム内のセルは「採点表」シート内のセルを示しているので学生のシート内のセルに指定しなければなり ません。
学生シートのセルの指定は前述しましたようにWorkSheets(ListBox1.Value)で指定を行ないます。
例えば最初のIf Cells(5+n, 2).Value="" Then の場合、
If WorkSheets(ListBox1.Value).Cells(5+n, 2)="" Thenのようにします。
このように貼り付けられたプログラム内のセルの前に「WorkSheets(ListBox1.Value).」を追記修正が必要です。
ここで便利の良いマクロの構文があります。それが「With (オブジェクト名)・・・・・ End With」です。
ここではワーククシートがオブジェクトとなります。
指定するセルの前にはドット( . )を付けてシート名を省略していること示してい ます。
以下のようになります。図4
では正常に動作するか確認してみましょう。
「入力開始」ボタンをクリックし、入力フォームを表示させ、入力を行なってみてください、「採点表」シートとその学生のシートに書込みが行なわれているの が確認されます。
これで他のシートへの書込み方法については終わります。
エクセルシートへの書込みだけであれば、ここまでで良いのですが、次に採点結果があるので採点点数で優良可のレベル判定を同時に行なうように次ページで行 なってみましょう。
   
次ページへ

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