発注システムのプロシージャ作成

マクロを組みシステムを動作させるプログラムは、プログラムの最小単位の「プロシージャ」の集合体で構成されています。
プロシージャは、最初に説明しました起動ボタンだけでなくユーザーフォーム上に配置されたコントロールにも各種のプロシージャを作成することができます。
プロジェクトウィンドウ内の各プロシージャの収納場所図22
1.起動ボタンの配置:
 最初にマクロを実行させる起動ボタンを「記録一覧」シートに貼り付けることと致します。
1)前に説明しましたようにタブ「開発」→「挿入」→「フォームコントロールのボタン」を選択します。
図1
2)次に「記録一覧」シート上でクリックすると「マクロの登録」画面が表示されます。図2
3)右側にある「新規作成」クリックすると、 ボタン1をクリックした場合のプロシージャへの書込み画面が表示されます。
図5
4)先ほど作成した「発注入力フォーム」の入力作業を行なう場合にはエクセルシート上に表示させなければなりませ んので、「発注入力フォーム(UserForm1)」をエクセル上に表示させるプログラムを書き込みます。
「ユーザーフォーム1を表示させなさい」(UserForm1.Show)と書きます。
プログラムは半角英数で書きます。
図6
書き終わったら、エクセル画面に戻り「ボタン1」をクリックしてみてください。
先ほど作成した「発注入力フォーム」が表示されるのが確認できます。
確認できたらユーザーフォームの右肩の閉じる(×)を押して非表示とします。
5)「ボタン1」の名称の書き換え:
 ①「ボタン1」を右クリックし、メニューの「テキストの編集」をクリックします。
 ②「ボタン1」の文字先頭部でカーソルが点滅していますので「Delete」キーで文字を消し、「発注入力」と書き換えます。
図20
作成した「発注入力」ボタンを右クリックしてメニューの「コードの表示」クリックしますと、コードウィンドウが表示されます。
プロジェクトのフォームフォルダ内の「UserForm1」をダブルクリックしますとUserForm1をコードウィンドウに表示できます。
2.プロシージャの種類:
このページの冒頭で述べましたコントロールの各種のプロシージャについて説明致します。
1)入力日時のテキストボックス1を右クリックして「コードの表示」を選択してみてください。
図10
2)テキストボックス1のコードウィンドウが表示されます。図11
3)プロシージャボックスの右端の▼をクリックします。図12
「Change」を始め各種イベントのリストが表示されます。
リストからイベントを選択することにより、そのイベントが発生したときのプロシージャの書込み画面が表示されますので、プログラムを書き込むことができま す。
例えば「Exit」を選択すると下図のように画面に追加されます。
図8
【参考】初期設定で最初に「Change」が表示されるようになっています。
今回説明の中で使用されるイベントは、「Change」、「Enter」、「Exit」の3種類です。
①Exit:
 カーソルが次のコントロールに移動(退出)した時にプログラムが実行される。
②Enter:
 カーソルがこのコントロールに入室してきた(カーソルがコントロール内に表示)ときにプロシージャに書き込まれているプログラムが実行される。
③Change:
 コントロール(例えばテキストボックス)に文字が書き込まれたり、修正した場合などのように入力されている文字が変わった場合にその都度プロシージャに 書き込まれたプログラム が実行されます。
上記3項目のプログラムの実行状況を発注番号のテキストボックス3で説明いたします。
4)「Exit」の場合の動作確認:
発注番号を書き込むと小文字で「po20・・・」と表示されます。(発注番号をここではPO+西暦末尾2桁+月(2桁表示)+日付(2桁表示)+-+通し 番号と仮定しています。)
通常発注番号のアルファベットは大文字表記が一般的かと思います。
テキストボックスに入力した場合アルファベットは小文字で表記されますので大文字表記に変換いたしまましょう。
図15
この「po20」はプロパティの「Value」と「Text」に書き込まれています。図16
大文字に変換させるには”Ucase”という関数を使用します。
このValueの値を大文字に変換するプログラムをイベント「Exit」のプ ロシージャに書き込みます。
テキストボックスの「Value」と「Text」は常に同じ値を示しているので「Text」でもよいのですが、これからの説明では「Value」で進めて ゆきま す。
【参考】コンボボックスの場合はプロパティの説明で行ないましたように「Value」と「Text」に異なる値を設定することができますので、 「Text」と「Value」のどちらにするか注意が必要です。
①プロシージャボックスのイベント「Exit」を選択します。(通常初期設定では「Change」となっています。)
②「Private Sub TextBox3_Exit(ByVal・・・・)   ~    End Sub」の画面に下記のように書き込みます。
図19
イベント「Exit」が起これば、テキストボックス3のValueを大文字に変換してテキストボックス3のValueに代入しなさいとのプログラムを書い ています。
③エクセルに戻り動作確認してみましょう。
「po20」と書き込んで見ましょう。
図24
「Enter」キーを押すと文字の右端のカーソルが発注先コンボボックスに移動すると同時に「po20」が「PO20」とアルファベットが大文字に変換さ れるのが分かるかと思います。図25
確認できましたらユーザーフォームの右肩の閉じる(×)で非表示にしましょう。
5)「Change」の場合の動作確認:
 「Exit」のプロシージャに書き込まれたプログラムを消して同じプログラムを今度はこの「Change」のプロシージャに書き込んでください。
今度は「テキストボックス3に文字が書き込まれる度に大文字に変換してテキストボックス3のValueに代入しなさい。」となります。
図13
エクセルでユーザーフォームを表示させます。
先ほどの「PO20」が残存していれば「Delet」、又は「BackSpace」キーで消去して、「po20」と一文字毎ユックリと書き込んで見てくだ さい。
瞬時に「po」が一文字づつ大文字に変換されるのが分かるかと思います。
図14
確認できましたら「発注入力フォーム」の右肩の閉じる(×)で非表示にしましょう。
6)「Enter」の場合の動作確認:
 プロシージャボックスの右端の▼をクリックして一覧表から 「Enter」を選択しますと「Enter」のプロシージャが追加されます。
図17
テキストボックス3にカーソルが入室(Enter)するとすでに書き込まれている文字を消しなさい(空白)と指示してみましょう。
空白は、「""」2つのダブルクオーテー ションで指示します。
次のように書きます。
図18
動作を確認してみましょう。
エクセル上に再度「発注入力フォーム」を表示させましょう。
発注番号のテキストボックス3に前に書いた 「PO20」がそのまま残存していると思います。そのままマウスをテキストボックス3に移動させクリックすると「PO20」が消えて空白になります。再度 何か文字を書き込み「Enter」キーを押すと。カーソルが発注先のコンボボックスに移動します。
マウスで再度発注番号のテキストボックスに移動さ せクリックしますと先ほど書き込んだ文字が消えブランク(空白)となるのが確認できます。
このプログラムの利点は以前に書き込まれている文字 を消すのに「BackSpace」、または「Delete」キーで操作しなくても消すことができます。
欠点としては、すでに書き込まれた発注番号の数文字を後で訂正しようとしたとき空白となり最初からの書き込みになるので、その場合には便利が悪いかもしれ ませんね。
確認が終わりましたら発注入力フォームを閉じ、コードウィンドウに戻りましょう。
以上で「Change」、「Enter」、「Exit」の動きが理解できましたら、「Enter」に書き込まれたプログラムは今後の説明で不要なので消 しておいてください。
消し方は、ここに書き込んだ「Enter」に書き込まれたプログラムTextBox3.Value=""を「Delete」キー、または 「BackSpace」キーで消してもよいし、下図のように消したいエリアをドラッグし、「Delete」キーでPrivate Sub TextBox3_Enter・・・からEnd Subまでのプロシージャすべて消してもよい。図21
以上主要なプロシージャの説明をいたしました。
これらプロシージャを必要に応じて各コントロールに作成することにより一つ のシステム(発注入力システム)として動かすことができます。
では具体的に発注入力システムを組んでゆきましょう。

次ページへ

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