こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

「1から5の間なら」とするには?

「1から5の間なら」とするには?
エクセルvbaです。

Sub test1()
Dim i As Integer
i = 1
If i = 1 Or i = 2 Or i = 3 Or i = 4 Or i = 5 Then
MsgBox "1-5までのどれかです"
End If
End Sub

は、最大でも5なので手入力でできますが、
これが1から100までならor演算子で繋ぐのは大変なので

Sub test2()
Dim i As Integer
i = 1
If i = [1-5] Then
MsgBox "1-5までのどれかです"
End If
End Sub

みたいなことをやりたいのですが、うまくいきません。

デバッグしてもエラーにもなりません。

自分でコードを書いといて聞くのもおかしいですがtest2の意味と、表題の方法を教えてください。
よろしくお願いします。

投稿日時 - 2010-06-04 21:55:39

QNo.5945112

困ってます

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

「1以上 かつ 5以下」ではダメなんですか?

投稿日時 - 2010-06-04 22:04:47

お礼

あっ....!
そうですね。
ありがとうございました。

投稿日時 - 2010-06-07 23:09:12

このQ&Aは役に立ちましたか?

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

回答(5)

ANo.5

VBAの本を読みましたか。基礎的なことです。
言語やその中の関数によってはBetweenという指定が出来るものもある、VBAでは使えない。
ですからAND条件でつないで表現する。
例えばExcelのシートの値の場合は
Sub test02()
For i = 1 To 5
If Cells(i, "A") >= 1 And Cells(i, "A") <= 100 Then
MsgBox "該当範囲内"
Else
MsgBox "該当範囲外"
End If
Next i
End Sub
ーー
Case文を使うなら、To が使えて
解説参照 http://homepage1.nifty.com/rucio/main/technique/Select.htm
Sub test02()
For i = 1 To 5
Select Case Cells(i, "A")
Case 1 To 100
MsgBox "該当範囲内"
Case Else
MsgBox "該当範囲外"
End Select
Next i
End Sub
ーーー
[1-5] は何処から来たのかな。

投稿日時 - 2010-06-05 22:54:52

お礼

ありがとうございました。

投稿日時 - 2010-09-23 19:40:04

ANo.4

5までくらいなら
「If i = 1 Or i = 2 Or i = 3 Or i = 4 Or i = 5 Then」
ですむけど
100までなら
「If i = 1 Or i = 2 Or i = 3 Or i = 4 Or i = 5 ....Or i = 99 Or i = 100 Then」
になるしこんなにいっぱい書いていられない。

「If i = [1-5] Then」
こんな記述があるのを知っているがうまくできていない。
できるなら
「If i = [1-100] Then」
にすればいいのに、
といったところでしょう?。

→Like演算子、between~and~を確認しておくと良いです。

1~100かというチェックでは、
IF文で大小判定するやり方と
100回分のループを実施し、存在したかどうかを判定するやり方と
大きく2つあります。

それより記載ロジックで
iが=1にしかなってないのも気になります。

投稿日時 - 2010-06-05 03:18:37

お礼

ありがとうございました。

投稿日時 - 2010-09-23 19:39:49

ANo.3

こんばんは!
外していたらごめんなさい。

もしかして↓のような感じのことをやりたいのでしょうか?

Sub test()
Dim buf As String
buf = InputBox("1から100の数値を入力してください。")
If buf = "" Then Exit Sub
If buf >= 1 And buf <= 100 Then
MsgBox "入力した数値は、" & buf & "です。"
Else
MsgBox "入力値が正しくありません。"
End If
End Sub

参考になればよいのですが
的外れなら読み流してくださいね。m(__)m

投稿日時 - 2010-06-04 22:46:29

お礼

ありがとうございました。

投稿日時 - 2010-09-23 19:39:36

ANo.2

■これなら反応します。
Sub test2()
Dim i As Integer
i = 1
If i Like "[1-5]" Then
MsgBox "1-5までのどれかです"
End If
End Sub

■1から100ならこんな方法の方が間違いないですが
Sub test2()
Dim i As Integer
i = 1
Select Case i
Case 1-100
MsgBox "1-100までのどれかです"
End Select
End sub

または

Sub test2()
Dim i As Integer
If i >= 1 And i <= 100 Then
MsgBox "1-100までのどれかです"
End If
End Sub

投稿日時 - 2010-06-04 22:08:36

お礼

ありがとうございました。

投稿日時 - 2010-09-23 19:39:17

あなたにオススメの質問