orをまとめることはできないか?

解決済みの質問

orをまとめることはできないか?

Dim 月 As Integer
If 月 = 3 Or 月 = 6 Or 月 = 9 Or 月 = 12 Then
End If
の場合は上の様に記載すればいいのですが
「もしくは」の条件がたくさんある場合、
(月,"or",3,6,9,12)
のようなことはできないのかな?と思いました。

今の条件は4つなので楽チンですが
条件が10個、20個となっても
Or 月 = 数値
と書き続けるしかないのでしょうか?

連番ではなく、飛び飛びの数です。
ご教授よろしくお願い致します。

投稿日時 - 2009-10-08 20:58:37

連想キーワード:

QNo.5352384

暇なときに回答ください

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

条件が多くなるとそこにパターンが生まれないでしょうか
そのパターンを条件にしてしまえばそれほど多くの条件を
書かなくてすみます。

If 月 = 3 Or 月 = 6 Or 月 = 9 Or 月 = 12 Then

月 MOD 3 =0 and 月<13
でもいけますよね 

投稿日時 - 2009-10-08 21:09:49

お礼

パターンを探ってみます。ありがとうございます。

投稿日時 - 2009-10-09 22:59:45

ANo.1

0人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(5件中 1~5件目)

ANo.6

次のようにしてはどうでしょう。
Dim 月 As Integer
If 月 / 3 = Int(月 / 3) Then
・・・・
End If

投稿日時 - 2009-10-09 10:23:00

お礼

ありがとうございます。大変参考になりました。

投稿日時 - 2009-10-09 23:02:03

ANo.5

(1)配列に条件となる値を入れて、0からUBound(x)までのようその値と等しいか繰り回して聞く。ORなら見つかったところで繰り回し処理を脱出。質問のような書き方よりはましだろう。
(2)EXCELの場合は同一列の複数セルに条件値を入力し、そのセル範囲でFindメソッドで聞く。見つかれば条件をみたし、見つからなければ条件不成立。EXCELの予定する方法かもしれない。色々なデータはシートのセルに置くのが原則。
(3)(順次比較以外に)配列の値に関し、Find機能はVBAではないと思う。(だんだん言語によっては設けられていくと思う)。
自分のコードで検索すればよい。幸い、2分検索法(知ってますか)という、コード数も10行以下の、検索回数も少なくてすむアルゴリズムがある。自分で組めばよい。
(4)数式で表されるような(数列的な)ルール性があれば、それを条件で使う(プログラム化する)のが一番です。
(5)配列で1,3,9だけ該当の場合、
x=Array("","1","","2","","","","","","9","")
という配列を作って
y=2
if x(y)<>"" then
'条件該当
Else
'条件該当せず
End IF
といった方法もある。
(6)もっと条件が多ければ、ファイル(多分テキストファイルで済む)にデータを持ち、必要の都度、読み込んでそのデータと比較するなどになろう。

投稿日時 - 2009-10-08 22:03:28

お礼

お詳しいですね。ありがとうございます。

投稿日時 - 2009-10-09 23:01:37

ANo.4

VBのようなので、プログラム言語の仕様です。
質問のの場合は 、
If 月 Mod 3=0 then
でいいですが、If文を使う限り、
何らかの規則性でもなければ、一般的にはまとめて記述することはできません。

投稿日時 - 2009-10-08 21:31:44

お礼

ありがとうございます。

投稿日時 - 2009-10-09 23:00:36

ANo.3

あとこんなのも

WorksheetFunction.Or(月 = 3 , 月 = 6 , 月 = 9 , 月 = 12)

投稿日時 - 2009-10-08 21:20:23

お礼

関数も使えるのですね。ありがとうございます。

投稿日時 - 2009-10-09 23:00:20

ANo.2

規則性が無いのなら
Select Case 月
  Case 3, 6, 9, 12, 13,17
    MsgBox "適合"
  Case Else
    MsgBox "不適合"
End Select

投稿日時 - 2009-10-08 21:18:26

お礼

Select Caseが使えるのですね。ありがとうございます。

投稿日時 - 2009-10-09 23:00:05

あわせてチェックしたい
  • 連番入力について。 ...
  • SendKeys "^V", True(貼り付け)のミス ...
  • 日個連 読み方教えて下さい ...
PR
【回答募集中】花粉にひと言、物申す![ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら