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

入力フォームの入力値をコマンドボタンを押すことでシートのリストに登録することをVBAでおこないたいのですが、そこでテキストに入力規制をかけたいのですがいろいろ調べ調べで試行錯誤していますがわからなくて困っています。
初心者のためご教授願います。

以下のようにできるか考えたのですが…
ユーザーフォームに ①OptionButton1 と ②OptionButtun2 と ③TextBox を配置し、①を選択すると正の数(自然数)、②を選択すると負の数(マイナスをつけた数)しか③に入力できない規制をかけたい(異なった数値が入力された場合メッセージで注意を促したい)のですが、そもそもこのようなことはできるのでしょうか?できるのであればコードを教えて下さい。

上記以外でも結果として登録する直前に①と②の状態からシートに誤登録を防ぐストッパーのような働きができればと考えています。

「ExcelVBAのコードを教えてください」の質問画像

質問者からの補足コメント

  • 実際に使用するフォームとシート構成のイメージも添付します。
    よろしくお願いします。
    Private Sub CommandButton1_Click()

    Dim LastRow As Long

    With Worksheets("Sheet1")

    If ComboBox1.Text = "" Then
    MsgBox "品名を入力して下さい。"
    ComboBox1.SetFocus

    Exit Sub

    End If

    If Not IsDate(TextBox2.Text) Then
    MsgBox "期限を正確に入力して下さい。"
    TextBox2.SetFocus

    Exit Sub

    End If

    If Not IsNumeric(TextBox3.Text) Then
    MsgBox "登録数を正確に入力して下さい。"
    TextBox3.SetFocus

    「ExcelVBAのコードを教えてください」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2016/07/19 21:00
  • つづきです。
    Exit Sub

    End If

    If (OptionButton1 Or OptionButton2) = False Then
    MsgBox "分類を選択して下さい"

    Exit Sub

    End If

    LastRow = Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row + 1
    If LastRow = 3 Then
    .Range("A" & LastRow).Value = 1
    Else
    .Range("A" & LastRow).Value = .Range("A" & LastRow - 1).Value + 1
    End If
     .Range("C" & LastRow).Value = TextBox1.Text

      補足日時:2016/07/19 21:03
  • つづき~2です
    .Range("D" & LastRow).Value = ComboBox1.Value
    .Range("E" & LastRow).Value = TextBox3.Text
    .Range("F" & LastRow).Value = TextBox2.Text

    If OptionButton1 = True Then
    .Range("B" & LastRow).Value = OptionButton1.Caption
    ElseIf OptionButton2 = True Then
    .Range("B" & LastRow).Value = OptionButton2.Caption

    End If

    End With

    MsgBox "登録しました"

    End Sub
    長くてすみません

      補足日時:2016/07/19 21:05

A 回答 (2件)

ワークシートのセルには入力規則が設定できますが、残念ながらテキストボックスに同様の機能はありません。

よって、自力でチェックコードを書くことになります。
すでに、ニューメリックチェックは掛けているようなので、同じように、オプションボタンの状態を判断しながら、ゼロ未満、またはゼロ以上のチェックを追加することになります。
オプションボタンの判定の仕方も分かっているようなので、他に何をアドバイスすれば良いのやら…。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。なるほどテキストボックスで規制はできないんですね。オプションボタンの状態を判断してゼロ未満~以上のチェックの追加~コードですが、自分なりに動作は想像はつくのですが、いざコードを書くとなるとなかなか自力では難しいので可能であればコードを教えていただきたいのですが…
この場合、おそらくマイナスの入力忘れだけが懸念されるだけなので、コマンドボタンを押した際、OptionButton2(出)がTrueの状態でテキストボックスに0以上の数字が入力されていたらメッセージで促すコードを付け足すような感じになる?のでしょうか?
何かわがままですみません。

お礼日時:2016/07/19 22:19

入力チェックが出来ていないとの事ですが、転記のロジックは出来ているのでしょうか?出来ているのであれば、補足にアップして頂くことは可

能ですか?
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございました。以下でなんかできちゃいました。

If OptionButton2 = True And TextBox3.Text >= 0 Then
MsgBox "マイナス入力してください"
Exit Sub
End If

ママチャリさんのアドバイスのおかげです。
重ね重ねありがとうございます。

お礼日時:2016/07/19 22:39

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