• ベストアンサー

エクセルのマクロで exit について

よろしくおねがいします 各々のシートのX1セルを値を参照して ゼロ以外の時は 印刷の処理をして ゼロの時は処理をしない という内容を書きたく思います。 このままで記述だとX1セルの値がゼロの場合 いきなりsubを抜けてしまうのですが 1,2枚目でゼロの場合 その次のシートにきちんと処理が 継続したいのですが どこを修正したらよろしいでしょうか? Sub マクロ() Dim shAry As Variant Dim i As Integer, cnt As Integer, x As Integer shAry = Array("東京", "千葉", "群馬") For cnt = LBound(shAry) To UBound(shAry) Sheets(shAry(cnt)).Select x = Int(((Range("x1").Value) - 1) / 5) + 1 If x = 0 Then GoTo ゼロの場合の処理 Else MsgBox "印刷枚数は " & x & "枚です" ここにいんさつの処理があります End If Next Exit Sub ゼロの場合の処理: MsgBox "印刷する内容はありません" End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • surounin
  • ベストアンサー率28% (30/106)
回答No.2

入れ子の関係について補足です^^; For   処理 If x = 0 Then   ゼロの場合の処理 Else   MsgBox "印刷枚数は " & x & "枚です" End If Next End Sub

ennkai
質問者

お礼

回答有難うございます 条件分岐の記述は 複雑になると For やら IFやら 何回も出てきて混乱してこまっていました 参考になる回答感謝です

その他の回答 (2)

  • a987654
  • ベストアンサー率26% (112/415)
回答No.3

>If x = 0 Then >GoTo ゼロの場合の処理 の”Goto”を”Call” に代えれば”ゼロの場合の処理”がどんなに 複雑であっても対応が効きます。 (当然CALLに引数を付けて結果を返す事も可能です)

ennkai
質問者

お礼

回答有難うございます まだCallは使ったことないですが これを機会にすこし勉強したいとおもいます 「引数・・・」の部分はまったくわからないので がんばります 回答ありがとうございました

  • denbee
  • ベストアンサー率28% (192/671)
回答No.1

>If x = 0 Then > GoTo ゼロの場合の処理 > >Else x=0の場合にGotoで飛ばす必要はなく、代わりに >MsgBox "印刷する内容はありません" を入れるだけでよいのでは?

ennkai
質問者

お礼

的確な回答ありがとうございます ややこしく考えすぎていたみたいで 恥ずかしい限りです。 本当にありがとうございました。

関連するQ&A