「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の意味と、表題の方法を教えてください。
よろしくお願いします。
No.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] は何処から来たのかな。
No.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にしかなってないのも気になります。
No.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
No.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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLServerでtime型への変換
-
データ突合のよい方法を教えて...
-
テーブルの結合(GROUP BY句の制...
-
BULKINSERTのWITHオプションに...
-
差し込み後、元データを変更し...
-
外部参照してるキーを主キーに...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
SQLで特定の項目の重複のみを排...
-
for whichの使い方
-
datetime型でNULL値を入れたい。
-
前置可能な語句を含む複数の修...
-
SQL文で、合計が0のレコードを...
-
INSERT文でフィールドの1つだ...
-
速度が低下し無効になったアド...
-
SQLサーバから、項目の属性(型...
-
EXISTSを使ったDELETE文
-
SQLで列名を変数にできないでし...
-
ExcelのVBAコードについて教え...
-
重複していないレコードの抽出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
BULKINSERTのWITHオプションに...
-
片方のテーブルに無いデータを...
-
Access 2000 サブクエリとJOIN
-
日付型項目のNULLについて(Pos...
-
SQLServerでtime型への変換
-
VBA 100億になると#が自動...
-
【SQL】指定期間の合計、MAX...
-
データ突合のよい方法を教えて...
-
指定値を否定した条件で、NULL...
-
テーブルの結合(GROUP BY句の制...
-
プロシージャがみつかりません...
-
バッチでのバックアップに関して
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
SELECT 文 GROUP での1件目を...
-
SQLで特定の項目の重複のみを排...
-
for whichの使い方
-
外部参照してるキーを主キーに...
-
SQLServerで文字列の末尾からあ...
おすすめ情報