![見出し画像](https://assets.st-note.com/production/uploads/images/66941142/rectangle_large_type_2_206bb85b1e4cf0b2188ae7305453a907.png?width=1200)
【ACCESS VBA】ACCESSで、For~Nextを利用するとも、細工が大切
ACCESSのループにおいて、For~Nextをどのようにして利用するのか、初心者の頃は、想像できませんでした。
しかし、どうしても、For~Nextを使ってみたい衝動にかられ、作成してみました。
YouTuebでも解説しています。是非、ご覧ください。
ACCESSで、For~Nextを利用するときも、細工が大切
こんにちは。伊川(@naonaoke)です。
最近は、ACCESSの一括処理系を、紹介しています。
今までの紹介は、テーブルのすべての項目に、各、値を格納しました。
では、同じフィールドに、連続で、値を格納する方法を紹介します。
想定としては、ラーメン屋の大将がいます。
営業時間は、11:00~15:00がランチ営業 17:00~22:00までが、通常営業とします。
1日、100杯のラーメンを売るとします。その際に、
醤油ラーメンを入力して、登録
味噌ラーメンを入力して、登録
なんて、やっていたら、夜の仕込みにまにあわねぇ!ってなります。
ラーメン屋さんは、1日50杯が、損益分岐点のようです。
つまり、51杯目から、黒字となるようです。
せめて、伝票番号を、1つの区切りとして、連続で入力して、ラーメン屋の大将を、気分良く、おいしいラーメンを作ってもらいましょう。
このブログはこんな人にお勧め
ACCESSで、VBAを勉強している人
同じフィールドに連続で、データを入力したい人
ACCESSでFor~Nextを、どのように利用するか、素朴な疑問を持っている人
このブログを、読み終わるころには・・・・
今回に記事は、飲食店経営の人には、有益な情報だと思います。
現在、ラーメン店は、ほぼ、券売機で食券を購入しますが、データ分析としても利用できます。
ラーメン屋の大将が気分よくACCESSに入力
![](https://assets.st-note.com/img/1638453939259-Gpw3kMK3IZ.png)
多分、手書きなら、こんな伝票を使っていると思います。
券売機を購入するなら、70万円前後、リースなら、3万円前後でしょうか。
しかし、券売機を利用しない、頑固オヤジなんでしょう。
ランチに、50杯のラーメンを売るとして、伝票の枚数は、約、35枚前後でしょう。
この入力に時間をかけると、大将の昼寝の時間、仕込みが間に合いません。
ラーメン屋の大将が気分よくACCESSに入力 作業手順 その1 入力フォーム
![](https://assets.st-note.com/img/1638453967448-4Yt5SJqjPB.png?width=1200)
このような、入力フォームを用意しました。
メニューは、5つしかありません。
右側のボタンを、押すと、商品が、上から順に入力されます。
登録して完了となります。
ラーメン屋の大将が気分よくACCESSに入力 作業手順 その2 価格の入力は不要
![](https://assets.st-note.com/img/1638453987010-rCLdtFW5EE.png?width=1200)
当然に、価格の入力は、不要です。
ACCESSには、オートルックアップクエリがあります。
商品が、主キーになってさえいれば、何の問題もありません。
ラーメン屋の大将が気分よくACCESSに入力 作業手順 その3 登録ボタンの仕掛け
![](https://assets.st-note.com/img/1638454006825-e1w9IXeJgy.png?width=1200)
テキストボックスに仕掛けをします。
前回は、冠に、txtと入力しました。
しかし、今回は、テキストボックス1と、仕掛けを打ちます。
つまり、1番後ろの、1を、For~Nextを利用して、ループさせます。
![](https://assets.st-note.com/img/1638454019743-K3byYJufyT.png?width=1200)
赤枠の部分が、For~Nextで、ループを実行している部分です。
テキスト1~テキスト9までが、ループします。
ラーメン屋の大将が気分よくACCESSに入力 作業手順 その3 塩ラーメンボタンの仕掛け
![](https://assets.st-note.com/img/1638454043579-qPOztqSZnA.png?width=1200)
ここも同様に、赤枠の部分を、For~Nextを利用してループさせています。
本来は、このような処理こそ、クラスモジュールで記載すべきですね。
しかし、わからなかったのよ。
ラーメン屋の大将が気分よくACCESSに入力 作業手順 その5 登録後、空白にする
![](https://assets.st-note.com/img/1638454065864-WdwaIrOoGT.png?width=1200)
今回は、Functionではなく、Callで呼び出しました。
ラーメン屋の大将が気分よくACCESSに入力 作業手順 その6 今回の重要な点
![](https://assets.st-note.com/img/1638454091524-dnkeiyTBMO.png?width=1200)
今回は、TM_testに仕掛けをしています。
今回の入力フォームは、商品を入力する欄が、全部で8個あります。
ラーメン屋の大将が、必ず、8杯のラーメンを入力するわけではありません。
ここに仕掛けを、儲けないと、5杯の入力の時は、テーブルには空白が入力されます。
だから、ここに仕掛けをします。
しかし、問題があります。
コードにも仕掛けをします。
![](https://assets.st-note.com/img/1638454104233-fQCAmnLnuF.png?width=1200)
この赤枠の部分です。
空白を登録しようとすると、デバックが発生します。
そのデバックを、回避するために、デバックが発生したら、デバックを無視して、登録完了としています。
多分、もっと、良い方法があると思います。
しかし、今の私には無理でした。
ここがポイント
実は、これも、ある会社から、ファイル作成の依頼を受けたときのコードです。
詳しい内容は割愛しますが、こんなことができると便利ですね。
For~Nextを利用して、ループを利用するのも、少し、発想を変えると、利用できるものですね。
今回は、非連結のテキストボックスで入力フォームを作成しましたが、連結でも、工夫次第で、For~Nextを利用することができると思います。
まとめ
クラスモジュールで、カッコよく決めたかったのですが、できませんでした。
追々、紹介しますので、ご期待ください。
今回も最後まで読んでいただきありがとうございました。
よろしければサポートをお願いします。いただいたお金に関しては、書籍の購入に充て、より良い情報を皆様に提供します。