• ベストアンサー

VBA

エクセルシートに1から5の数値がランダムに打ち込んであって、1から5以外の数値が混ざっていた場合、「再入力してください」と表示させるVBAコードを作りたいのですが、どうしたらよいでしょうか?

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>1から5以外の数値が混ざっていた場合、「再入力してください」と表示させる と言う事は1~5しか入力できないよう入力規則で設定するのはダメなのですか?

kan1kan
質問者

お礼

入力規制で十分対応できました。ご指摘ありがとうございます。

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#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)
回答No.2

>打ち込んであって と入力は完了しているような書き方でありますが、入力データの増加はないのですか。 今後も入力が有るなら、シートのイベントを考えるとか、入力規則の設定とかのことも考えることになりますのでね、質問が不明瞭なわけです。 ーー データの有る列の構成は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

kan1kan
質問者

お礼

細かいところまで書いていなくて失礼しました。回答ありがとうございます。

関連するQ&A