プロが教える店舗&オフィスのセキュリティ対策術

「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の意味と、表題の方法を教えてください。
よろしくお願いします。

A 回答 (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/ …
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] は何処から来たのかな。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/23 19:40

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にしかなってないのも気になります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/23 19:39

こんばんは!


外していたらごめんなさい。

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

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/23 19:39

■これなら反応します。


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
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/23 19:39

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

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

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

お礼日時:2010/06/07 23:09

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