- ベストアンサー
1から5の間ならとするには?
- ExcelのVBAを使用して、1から5の間かどうかを判定する方法を知りたいです。
- 現在のコードは手入力で1から5までの数値をチェックしていますが、1から100までの場合はコードが複雑になってしまいます。
- test2のコードでは、[1-5]という記述で1から5までの数値かどうかを判定しようとしていますが、うまく動作しません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
「1以上 かつ 5以下」ではダメなんですか?
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
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] は何処から来たのかな。
お礼
ありがとうございました。
- layy
- ベストアンサー率23% (292/1222)
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にしかなってないのも気になります。
お礼
ありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 外していたらごめんなさい。 もしかして↓のような感じのことをやりたいのでしょうか? 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
お礼
ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
■これなら反応します。 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
お礼
ありがとうございました。
お礼
あっ....! そうですね。 ありがとうございました。