For Each … Nextで条件分岐したいとき③

ユーザーフォーム Excel VBA For Each…Next

前回のブログでフォーム表示ボタンをクリックするとユーザーフォームが表示されるところまで行いました。

今回は指定したシートがあるか調べるために「For Each…Next」を組み込んだコードがどの様に動作しているか確認したいと思います。

1. ブレークポイントを設定します。

VBEを表示してUserForm1のコードを表示し「For Each…Next」の「Next Sheet」の行の行頭をクリックすると丸印が表示されブレークポイントが設定されます。

2. エクセルのシート1(蔵書管理表)を表示して、フォーム表示ボタンを押しユーザーフォームを表示します。

3. 本のジャンル、本のタイトル、著者、出版社、ISBN、を入力して新規登録ボタンを押します。

4. 設定したブレークポイントでプログラムが停止します。

5. F8キーを押してステップ実行を行います。

Flagの上にマウスのカーソルを持っていきF8キーを数回押していくと「Flag = False」の表示が途中で「Flag = True」になります。

6. もう一度F8キーを押すと「If Flag = True Then」の行にカーソルが移動します。

本のジャンルのシートがあったのでTrueと判断されました、無かったときはFalseと判断されてElseの行にカーソルが移動します。

7. F5キーを押してプログラムを継続させると蔵書管理表と漫画のシートにユーザーフォームに入力した値が転記されてプログラムが終了します。

ユーザーフォームを使うとステップ実行が少しやりにくくなるのでブレークポイントと組み合わせて行うと良いかと思います、長い文章を最後までお読みいただきありがとうございました。

コメント