Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9666 / 13646 ツリー ←次へ | 前へ→

【26146】IF文に関する疑問 知ろう途 05/6/24(金) 15:23 質問[未読]
【26147】Re:IF文に関する疑問 Jaka 05/6/24(金) 15:33 発言[未読]
【26159】Re:IF文に関する疑問 [名前なし] 05/6/24(金) 22:23 回答[未読]
【26164】Re:IF文に関する疑問 kobasan 05/6/25(土) 6:55 発言[未読]
【26167】Re:IF文に関する疑問 知ろう途 05/6/25(土) 9:23 お礼[未読]

【26146】IF文に関する疑問
質問  知ろう途  - 05/6/24(金) 15:23 -

引用なし
パスワード
   いつもお世話になっております。
まだまだ勉強中の身ですのでご教授お願いします。
ある二つのセルの値AとBを調べる時に・・・

Sub Test()

  If [A4].Value = 4 And [A5].Value = 8 Then

  '処理1

  ElseIf [A4].Value = 8 And [A5].Value = 4 Then

  '処理1

  ElseIf [A4].Value = 10 And [A5].Value = 15 Then

  '処理2

  ElseIf [A4].Value = 15 And [A5].Value = 10 Then

  '処理2
  
  End If

End Sub

といった感じにAとBがBとAとなってる場合でも同一の処理を行いたいのですが
上記のように長々とした文にするしか無いのですか?
Select Caseを使ってチャレンジしましたが、長々となってしまいます。
どなたか良い知恵をお貸し下さい。

【26147】Re:IF文に関する疑問
発言  Jaka  - 05/6/24(金) 15:33 -

引用なし
パスワード
   こんにちは。

▼知ろう途 さん:
 略
>といった感じにAとBがBとAとなってる場合でも同一の処理を行いたいのですが
>上記のように長々とした文にするしか無いのですか?
長々の意味をどう受け取ったら良いのかわかりませんが...。
Or で分岐条件を増やすのはダメでしょうか?

  If [A4].Value = 4 And [A5].Value = 8 Or _
    [A4].Value = 8 And [A5].Value = 4 Then
  '処理1
  ElseIf [A4].Value = 10 And [A5].Value = 15 Or _
      [A4].Value = 15 And [A5].Value = 10 Then
  '処理2
  End If

【26159】Re:IF文に関する疑問
回答  [名前なし]  - 05/6/24(金) 22:23 -

引用なし
パスワード
   ▼知ろう途 さん:
こんな考え方ではいかがでしょうか。

方法1 CountIfで、入力範囲にそれぞれの数字が入ってることを確認

Sub Macro1()
  With WorksheetFunction
    Select Case True
    Case .CountIf([A4:A5], 4) And .CountIf([A4:A5], 8)
      '処理1
    Case .CountIf([A4:A5], 10) And .CountIf([A4:A5], 15)
      '処理2
    End Select
  End With
End Sub


'方法2 小さい数字 & "|" & 大きい数字 という文字列を作って、その文字列で分岐

Sub Macro2()
  With WorksheetFunction
    Select Case .Min([A4:A5]) & "|" & .Max([A4:A5])
    Case "4|8"
      '処理1
    Case "10|15"
      '処理2
    End Select
  End With
End Sub

【26164】Re:IF文に関する疑問
発言  kobasan  - 05/6/25(土) 6:55 -

引用なし
パスワード
   みなさんおはようございます。

Select Case を使うのなら、こんな感じでもできます。

Sub Test()
  Select Case [A4].Value * [A5].Value
    Case 32: MsgBox "処理1"
    Case 150: MsgBox "処理2"
  End Select
End Sub

【26167】Re:IF文に関する疑問
お礼  知ろう途  - 05/6/25(土) 9:23 -

引用なし
パスワード
   JAKAさん、名前なしさん、kobasanさんありがとうございます!
AndとOrを併用出来ることすら知りませんでした・・トホホ
それにしてもこんなに色んな方法を思いつくみなさんが凄いです。
これからもっともっと勉強して早く回答する側に行きたいです。
お世話になりました。

9666 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free