Accessでたくさんのデータ処理をするときに繰り返し処理を用いることが多々あると思います。例えば、Access VBAではFor文を用いたり、While文を用いたり、Do loop文を用いることで、繰り返し処理を実現します。
こういった制御処理を行う上で、ある条件に至ったときには制御文から抜け出したいといったことが出てきます。普段の処理では発生しない例外的な処理が発生することで制御処理から抜け出せなくなり無限ループに陥るといったこともあります。
そこで今回は、制御文から強制的に抜け出す処理の実装方法について紹介をします。
なお、本ホームページでは過去にVBAにおける制御文についても紹介していますので、ご参考になさってください。
制御文からの抜け出し方法: GoTo文の利用
初めに、制御文から強制的に抜け出す場合には、「GoTo」文を用いることを紹介します。
GoTo文を用いるときは、処理を飛ばす先を指定する必要があり、ラベル設定も必要となります。
GoTo Label
~~~
Label:
この際の記載方法は上で示したとおりですが、処理を飛ばした先のLabelには「:」を持ちいることを忘れないようにしてください。
今回の例では、二重の制御文を実装した際にある条件に至った場合に制御処理から抜け出す方法を実装したいと思います。
説明のために、単純に九九を計算するためのプログラムを作成し、その後に制御文から抜け出すことを見ていただくために「7の段」に達した段階で強制的に制御文から抜けだす処理の方法を示します。
まずは、九九を計算するVBAコードの例を示します。
Private Sub GotoStatement() Dim x As Integer Dim y As Integer x = 1 y = 1 Do Until x = 10 Do Until y = 10 Debug.Print x & "×" & y & "=" & x * y y = y + 1 Loop x = x + 1 y = 1 Loop End Sub
このコード自体は単純な処理だと思います。2つの変数を用意し、それぞれをインクリメントしながらDo Loop文で繰り返し処理を実装した内容となります。イミディエイトウィンドウに掛け算の結果が表示されるようにしています。
それでは、次に「7の段」になった段階で処理を抜け出す方法を見ていきましょう。
先ほど紹介したVBAコードを以下に示すように修正します。
Private Sub GotoStatement() Dim x As Integer Dim y As Integer x = 1 y = 1 Do Until x = 10 Do Until y = 10 Debug.Print x & "×" & y & "=" & x * y y = y + 1 Loop x = x + 1 y = 1 If x = 7 Then GoTo out End If Loop out: End Sub
主には大きなDo Loop文の後ろにIf文を設定し7の段になった段階で「GoTo文」により「out」ラベルまで処理を飛ばすようにしています。
この処理の結果、6の段までは計算がされ、7の段になった段階で強制的に大きな制御文の外まで移動して処理をすることになります。
この処理を実行すると、イミディエイトウィンドウには6の段の掛け算までが表示されることになります。
このようにして「GoTo文」を用いて制御文から抜け出す方法について紹介をしました。
まとめ
今回は制御文から強制的に抜け出す方法として「GoTo文」の使用方法について紹介をしました。
複雑に制御文を組む場合に、例外的な処理を実装する場合にもGoTo文を用いることはできますし、制御文に限らず、If文等と組み合わせて、ある条件に至ったときはGoTo文で一度に処理を飛ばすことも可能です。
ただ、GoTo文を用いるとコードの可読性は損なわれる可能性がありますので、極力GoTo文を使わないで処理を実装できるようにすることが好ましいです。
今の時代、VBAに限らずプログラミングができるということは、当然のスキルとして広く社会で認知されています。いまだプログラミングが十分にできないという人は、今からでも遅くありません。できるだけ早く基本的なプログラミングスキルを習得することをお勧めします。
ご自身にあった専門書を参考に、実践的なプログラミング・データベース・サーバ、データ分析・機械学習など、システムエンジニアや今後を担うDX人材に必要とされているスキル獲得に向けて基礎から学んでいくことが大切です。
最初につまずきがちな点も、書籍を読みながら試行錯誤して課題解決していくことで、自身のスキルアップを目指すことができます。思い立ったが吉日、是非業務効率の改善に向けてプログラミング学習に勤しんでください!
スポンサーリンク
コメント