アプリ版:「スタンプのみでお礼する」機能のリリースについて

久しぶりにお世話になりたいのですが・・・

Do Until 条件
何らかの処理
If条件 Then
何らかの処理
Elseif条件 Then
何らかの処理
Else
何らかの処理
(1) 
End if
何らかの処理
Loop

というような構文を作った際に(1)のところ(Elseに適合した
場合のみ)でEnd if以下の処理を飛ばして次の周回(? 要はDo~の
最初のところに戻る)にはどうすればよいのでしょうか?

A 回答 (3件)

1)Goto文でループ末尾にジャンプする。


2)フラグ変数を使って、ELSEの時はフラグ変数をfalseにし、何らかの処理を実行するかを判定する。
3)ループ内部の処理を別サブルーチンにし、ELSEの場合Exit Subする。
――とか。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
結局1)の「Goto文でループ末尾にジャンプする。」
が一番簡単にできるところを重視して使うことにしました。
いろいろな手段を考えていただきありがとうございます。

お礼日時:2006/12/27 00:27

こんにちは。



#1さんがすでに書いていますが、ループの中だけを抜き出して、サブルーチンにするとか?他人から批判をされないコードに近くなるとは思います。ただ、VBAでは、別に、Goto で、元のラベルに戻っても良いです。プライベートの世界では、それがいけない決まりなんてありまんせからね。

ただ、実際のコードでは、また違う考え方も出てくるような気がします。ある意味では、机上の話です。

'----------------------------------------------------------
Sub ParentPrc()
Dim i As Long
Dim MaxNum As Long
MaxNum =最大値 

 For i = 1 To MaxNum  'またはループ
  ChildPrc i  '参照渡し
 Next i
End Sub

Private Sub ChildPrc(ByRef i As Long) '念のため-ByRef
Do Until 条件
  何らかの処理 '←たぶん、ここにカウンターがあるので、取る
    If条件 Then
      何らかの処理
    Elseif条件 Then
      何らかの処理
    Else
      何らかの処理
      Exit Sub
    End if
      何らかの処理
Loop
End Sub

'----------------------------------------------------------
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
結局Goto文を使うことにしました。
今、私がやりたいようにするにはこれが一番楽だったので。
代案を示していただいたのに申し訳ないです。

お礼日時:2006/12/27 00:31

美しくなければプログラムではないということで・・・。



Do Until 条件
  何らかの処理
  If条件 Then
    何らかの処理
    XXXXX
  Elseif条件 Then
    何らかの処理
    XXXXX
  Else
   何らかの処理
  End if
Loop

Private Sub XXXXX
End Sub
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
変数をいろいろ再設定するのが面倒くさい(汗)ので
GoTo文を使ってしまうことにしました。
せっかくアドバイスくださったのに申し訳ないです。

お礼日時:2006/12/27 00:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!