マクロVBAのプログラムの実行については他の記事で説明しました。
プログラムの実行についての記事はこちらから☟
【マクロVBA知識 27】ステップイン・オバー・アウトで動作確認(デバッグ)を行う ► 独学エクセル塾 (dokugakuexcel.com)
動作確認を行う際にはF8を使用して1行ずつ実行する方法もありますが
プログラムが長くなれば手間がかかる上、確認が済んでいるプログラムも1行ずつ確認しないといけません。
そこで今回は指定した位置までプログラムを実行する方法について紹介したいと思います。
今回の記事を身に着ければプログラムの動作確認が楽になりますので是非参考にしてみてください。
それでは見ていきましょう。
■見本のプログラムを紹介
まず、機能をプログラムを用いて説明するため見本のプログラムを準備しました。
内容は下図の見本を作成してみました。
行いたい作業として、単価と購入数が入力されてある場合に
E列の総額を計算するプログラムを作成したいと思います。
作成したプログラムは下記の通りです。
Sub 総額の計算()
Dim Cycle As Variant
For Cycle = 4 To 16 Step 1
If Cells(Cycle, 3) <> “” Then
Cells(Cycle, 5) = Cells(Cycle, 3) * Cells(Cycle, 4)
End IfNext Cycle
End Sub
今回は実行についての記事なので詳しくは説明しませんが、
「For Next」 と「If」を使用した簡単なプログラムです。
「For Next」 と「If」の記事はこちらから☟
【VBA知識 7】FOR…NEXTで指定した数値で繰り返し・ループ動作をする。 ► 独学エクセル塾 (dokugakuexcel.com)
【マクロ・VBA知識 9】If …Thenで条件分岐・判別をする(○○なら△△) ► 独学エクセル塾 (dokugakuexcel.com)
では実行した結果を見てみましょう。
計画通り、機能してくれています。
■カーソル行の前まで実行する方法について
まずはカーソル行の前まで実行する方法について紹介したいと思います。
こちらの方法は動作確認が序盤で停止したい位置が毎回変化する場合に便利です。
再度、プログラムを図でみてみましょう。
このプログラムのメインの機能は単価(C列)が空白でない場合、
単価(C列)と購入数(D列)をかける「Cells(Cycle, 5) = Cells(Cycle, 3) * Cells(Cycle, 4)」
の部分ですね。
しかし単価(C列)が空白な場合は対象の部分は飛ばされるので
何度も「F8」をおして実行しないといけません。
今回の見本は行数が少ないので問題ないですが、行数が多い場合は大変です。
では「Cells(Cycle, 5) = Cells(Cycle, 3) * Cells(Cycle, 4)」の部分までプログラムを飛ばし、
対象のプログラムまで来たらプログラムを停止させてみましょう。
まず実行したいプログラムを選択し、「F8」を1回以上押して実行します。
そして止めたい行の部分で右クリックを押します。
ここでは「Cells(Cycle, 5) = Cells(Cycle, 3) * Cells(Cycle, 4)」の部分ですね。
するとメニューに「カーソル行の前まで実行」という項目があります。
ではこちらを押してみましょう。
選択した行まで実行し、対象行で止まってくれました。
繰り返しの変数「Cycle」も4からスタートですがすでに「7」になってます。
つまり、「4~6」は空白で指定行が飛ばされたので、条件にあれはまる「7」で止まってくれました。
とても便利な機能ですね。
■ブレークポイントを活用する
では次の手法を見てみましょう。
使用する機能は「ブレークポイント」と呼ばれるものです。
こちらの手法は止めたい位置があらかじめ決まっている場合は
とても便利な機能です。
では見ていきましょう。
プログラムは先ほどと同様のプログラムを使用し、
計算結果を書き込む位置で止めたいと思います。
まず途中で停止したい列を選択します。
この状態で「F9」を押してみましょう。
すると下図のように止めたい行の左に赤い印と対象行に色がつきました。
こちらが「ブレークポイント」と呼ばれる機能になります。
ちなみにこちらの「ブレークポイント」は「F9」を押す以外にも設定することができます。
その他の方法としては
「ブレークポイント」の設定したい行の左のスペースを左クリックします。
こちらはワンクリックで設定できるのでとても便利ですね。
もう一つの方法として
「ブレークポイント」を設定したい行を選択して「デバッグ」から「ブレークポイントの設定/解除」を
押しても設定可能です。
では実際に「ブレークポイント」を活用してみましょう。
上記の状態で全実行の「F5」を押してみましょう。
結果はこのようになります。
「ブレークポイント」の位置で止まってくれました。
繰り返し動作で指定の場所の処理を確認したい時など
止めたい位置がすでに判明している場合はとても便利な機能ですね。
⬛︎公式の説明
わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟
ブレークポイントの設定とクリア (VBA) | Microsoft Learn
■まとめ
いかがだったでしょうか。
動作確認(デバッグ)はプログラムが長ければ長いほど大変な作業です。
確認が終わっている個所を飛ばして実行したり、
ブレークポイントを活用して止めたい個所を止めたりすることで
動作確認(デバッグ)を効率よく実行してみてください。
それでは次回の記事でお会いしましょう。