ソースコードを整理して、注釈を記しました。
また、Tab でインデントを付けました。反映してくれればいいのですが・・・
問題は、以下のマクロで、Np = 2 かつ NPrt = 2 の時
If Np = NPrt Then GoTo Adr02 で、ループから抜けてくれないことです
該当のソースコード
ソースコード
Public Fst, Lst, LstP, NPrt, Cntl1 As Variant
Option Explicit
Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+z
'
Dim Np, No, INp, INo, NpM, Mesage01, Cntl2, Incr As Variant
Fst = 1 '印刷範囲の最初の番号 Lst = 1 '印刷範囲の最後の番号 LstP = 0 '前回印刷した範囲の最後の番号 NPrt = 2 '印刷部数
Adr01:
UserForm2.Label3.Caption = "前回印刷の最後の番号は " & LstP & " です"
' UserForm2 で処理に必要な値を取得します
' TextBox1~3 に、今回印刷のデフォルト値、あるいは候補値を表示して、
' それらを修正させるか、あるいはそのまま続行する(「印刷」ボタンを押す)
' UserForm2 では、「終了」ボタンが押されると、Cntl1 に 2 が代入され
' 「印刷」ボタンが押されると、Cntl1 に 1 が代入されます
UserForm2.TextBox1.Value = Fst UserForm2.TextBox2.Value = Lst UserForm2.TextBox3.Value = NPrt UserForm2.Show If Cntl1 <> 1 Then GoTo Fin01 '「印刷」ボタン(Cntl1=1)ではなく ' 「終了」ボタン(Cntl1=2)が押されると終了 For Np = 1 To NPrt ' 指定された印刷部数(NPrt)まで繰り返す For No = Fst To Lst ' 指定された最初の番号から最後の番号まで印刷を繰り返す INp = Np * 7 ' ここでは、印刷の代わりに、変数の値を確認 INo = No Cells(INo, INp) = "No = " & No ' No の値を表示 Cells(INo, INp + 1) = "Np = " & Np ' Np の値を表示 Cells(INo, INp + 2) = "NPrt = " & NPrt ' NPrt の値を表示 Next No Cells(INo, INp + 3) = "Np2 = " & Np ' Np の値を再表示 Cells(INo, INp + 4) = "NPrt2 = " & NPrt ' NPrt の値を再表示 If Np = NPrt Then ' 必要部数を印刷したら終了(次の印刷の要否確認は不要) GoTo Adr02 ' NPrt が 2 で、Np = 2 ならループを抜けたい Else Cells(INo, INp + 5) = "Np3 = " & Np ' Np の値を再々表示 End If If NPrt = 1 Then ' 必要部数(NPrt)が 1 なら確認は不要(ループを抜ける) GoTo Adr02 Else Cells(INo, INp + 6) = "Np4 = " & Np ' Np の値を再々々表示 NpM = Np + 1 Mesage01 = NpM & " 部目の印刷を行いますか" Cntl2 = MsgBox(Mesage01, vbOKCancel) End If If Cntl2 = vbCancel Then GoTo Adr02 Next Np ' 外側のループの最終行
' 次回印刷の最初の番号を Lst + 1 とし、その最後の番号は、今回の増加分を加えた番号として、
' UserForm2 に表示します
Adr02:
LstP = Lst Incr = Lst - Fst Fst = Lst + 1 Lst = Fst + Incr GoTo Adr01
Fin01:
MsgBox "処理を終了します"
End Sub
試したこと
NPrt が2のとき、Mesage01 を表示するメッセージボックスが2回表示されます
(2回目の MsgBox の表示内容は、「3 回目の印刷を行いますか」です)
なお、上記の「Np2 =」、「Np3 =」、「Np4 =」で表示した Np の値は、いずれも、2 になっています。
つまり、If Np = NPrt Then GoTo Adr02 でも、Np のループから抜けていないようです・・・
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
ソースコード
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。