• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでorを使用しているときの合致条件)

VBAでorを使用して合致条件を判別する方法

このQ&Aのポイント
  • VBAでif文を使用して条件判定を行う際に、iの値が1, 2, 3のいずれかに合致しているかどうかを判定する方法について教えてください。
  • 現在はif文を使用して個別に条件を判定していますが、iの値が1, 2, 3のいずれかに合致している場合に処理を行う方法を教えてください。
  • VBAでiの値が1, 2, 3のいずれかに合致している場合に処理を一括で行う方法について教えてください。

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

こんにちは。 こんな感じのことでしょうか? Sub Re8336327()   Dim nMatchIdx As Long   Dim i As Long   For i = 0 To 4     Select Case i     Case 1, 2, 3       ' ' 共通の処理、処理(1)       ' ' ★★ここの時点でiの値がどの条件にマッチしているかを取りたい       nMatchIdx = Application.Match(i, Array(1, 2, 3), 0)       Debug.Print "i = "; i, "条件("; nMatchIdx; ")にマッチ"  '  ←確認用の仮コード     End Select     Select Case nMatchIdx     Case 1       ' ' 条件( 1 )の場合の個別処理     Case 2       ' ' 条件( 2 )の場合の個別処理     Case 3       ' ' 条件( 3 )の場合の個別処理     Case Else  ' ' 条件( 1 )~条件( 3 )にマッチしない場合のの個別処理(必要なら)       ' ' 条件( 1 )~条件( 3 )にマッチしない場合のの個別処理(必要なら)     End Select   Next i End Sub ベタに書くと以下のようになりますが、 繰り返し同じ処理を書くのに抵抗があると、、、。 Sub Re8336327a()   Dim i As Long   For i = 0 To 4     Select Case i     Case 1       ' ' 共通の処理、処理(1)       ' ' 条件( 1 )の場合の個別処理     Case 2       ' ' 共通の処理、処理(1)       ' ' 条件( 2 )の場合の個別処理     Case 3       ' ' 共通の処理、処理(1)       ' ' 条件( 3 )の場合の個別処理     Case Else       ' ' 条件( 1 )~条件( 3 )にマッチしない場合のの個別処理     End Select   Next i End Sub ただ、if i=1 or i=2 or i=3 then 条件に合致する場合の 共通の処理であるとところの"処理(1)"そのものを サブルーチンとして別のプロシージャにかいてしまえば、 Sub Re8336327a()   Dim i As Long   For i = 0 To 4     Select Case i     Case 1       ' ' 共通の処理       ProcSub       ' ' 条件( 1 )の場合の個別処理     Case 2       ' ' 共通の処理       ProcSub       ' ' 条件( 2 )の場合の個別処理     Case 3       ' ' 共通の処理       ProcSub       ' ' 条件( 3 )の場合の個別処理     Case Else       ' ' 条件( 1 )~条件( 3 )にマッチしない場合のの個別処理     End Select   Next i End Sub Sub ProcSub()   ' ' 処理(1) End Sub これでも案外スッキリ書けますけれど。 後は、状況やお好み次第ですけれど。

kgyqk433
質問者

お礼

やっぱり、どうがんばっても冗長な記載になりますよね。。。 ありがとうございました!!

その他の回答 (2)

回答No.3

Q、iは、1,2,3のどれで合致しているか判別する方法はありますか? A、i の値で判別します。

kgyqk433
質問者

お礼

ほんと、ばかですね。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

If文をネストしなくとも Select Case http://officetanaka.net/excel/vba/statement/SelectCase.htm こんな形でも処理はできる