へびせんせい
簡単な入荷出荷リストを作って、データのカウント方法について考えてみます。
下の画像のようなリストをある条件を満たしながら、手入力で表を埋めていくこととします。
その際に、条件を満たさないときには警告がでるように設計しなさい。
Contents
演習問題・入荷出荷リストの手入力での作成
- 商品リストの5つの商品を、1日につき、3つ入荷し、1つ出荷するものとする
- 1日めは、すでに決められており、「りんご、みかん、ばなな」が入荷され、出荷はないこととする
- 2日めの入荷、出荷、次に、3日めの入荷、出荷・・・の順に5つの商品のいづれかを手入力する
- 入荷・出荷に商品を入力する際には下記の条件に従う
- もし条件を満足しない商品を入力したときには、警告が出るように設計する
入荷の条件
1つ商品が入荷されれば、1カウントされてストックされるものとする
入荷は5つの商品から任意に選択できるが、できる限り均等に(数の差が1以下)なるように入荷する
・2日めに「すいか、いちご、りんご」を入荷
→ストックは、りんご2、みかん1、ばなな1、すいか1、いちご1となる(OK)
・2日めに「すいか、りんご、みかん」を入荷
→ストックは、りんご2、みかん2、ばなな1、すいか1、いちご0となる(NG)
出荷の条件
1つ商品が出荷されれば、ストックから-1カウントされるものとする
出荷はストックの中から任意に選択できるが、できる限り均等に(数の差が1以下)なるように出荷する
・2日めに「すいか、いちご、りんご」を入荷、「りんご」を出荷
→ストックは、りんご1、みかん1、ばなな1、すいか1、いちご1となる(OK)
・2日めに「すいか、いちご、りんご」を入荷、「みかん」を出荷
→ストックは、りんご2、みかん0、ばなな1、すいか1、いちご1となる(NG)
警告の表示方法
入荷出荷リストに商品を入力したときに、条件判定を行い、条件を満たしていないときは警告を出すように設計する
警告にはMsgBoxを用いる
警告を出すには様々な方法が考えられるが、ここでは、MsgBoxを出すこととする。
商品リストのセルに入力したときに、条件を満たさない場合、MsgBoxを表示させる。
表示内容は
*表記の中の○と×には、実際のデータが代入されること
無限ループに注意
Worksheet_Changeイベントは、セルが変更されたときに動作する。
このイベントには、気をつけなければならない点があり、このイベント内でセルを変更すると、それをトリガーにして同イベントが動作してしまう。
そして、またWorksheet_Changeが動作し、再びセルが変更され、またWorksheet_Changeが動作し・・・
という具合に、プログラムが止まらなくなってしまう。
そこで、
Application.EnableEvents = False
'セルを変更する処理
Application.EnableEvents = True
と、することで、セルの変更のときには、このイベントを動作させないようにすることができる。
さらに追加の条件
可能なら、次の条件も考慮せよ。
- Worksheet_Changeプロシージャーはシート内のすべてのセルに対して動作するため
- 商品リスト以外の商品が入力されたとき
- 10日めの出荷を入力して、条件を満足するとき