- ベストアンサー
VBA
エクセルシートに1から5の数値がランダムに打ち込んであって、1から5以外の数値が混ざっていた場合、「再入力してください」と表示させるVBAコードを作りたいのですが、どうしたらよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>1から5以外の数値が混ざっていた場合、「再入力してください」と表示させる と言う事は1~5しか入力できないよう入力規則で設定するのはダメなのですか?
その他の回答 (2)
- n-jun
- ベストアンサー率33% (959/2873)
#1です。 入力済というのなら、範囲がA1:E1だとしたら最小値が1未満か最大値が5を超えるかで判断して Sub try() With Application If .Min(Range("A1:E1")) < 1 Or .Max(Range("A1:E1")) > 5 Then MsgBox "再入力して下さい" End If End With End Sub とか?
- imogasi
- ベストアンサー率27% (4737/17070)
>打ち込んであって と入力は完了しているような書き方でありますが、入力データの増加はないのですか。 今後も入力が有るなら、シートのイベントを考えるとか、入力規則の設定とかのことも考えることになりますのでね、質問が不明瞭なわけです。 ーー データの有る列の構成は1列ですか。 ーー >どうしたらよいでしょうか いろんな意味に取れます。 どこへコードを書くのかとかの質問も無くはないでしょう。 それは判っていて、VBAコードが知りたいということですか。 回答者に全的にコードを書かせるのは、丸投げになるが、まあこの程度ならよいでしょう。 ーーー A列にデータがあり、入力は済んでいるとして(内容チェック作業という事で)、コードの一例ですが VBEで標準モジュールに Sub test01() d = Range("A65536").End(xlUp).Row 'MsgBox d For i = 1 To d If Cells(i, "A") > 5 Or Cells(i, "A") < 0 Or Cells(i, "A") = "" Then p01: x = InputBox(i & "行目のデータが範囲外です") If x > 5 Or x < 0 Or x = "" Then GoTo p01 Else Cells(i, "A") = x GoTo p02 End If End If p02: Next i End Sub
お礼
細かいところまで書いていなくて失礼しました。回答ありがとうございます。
お礼
入力規制で十分対応できました。ご指摘ありがとうございます。