1322189150 エクセルVBAマクロを教えてください。(エクセル2003使用です)


エクセルVBAマクロ

CheckBox1のチェックがOFFで値がfalseになった時、TEXTBOX1にカーソルが自動的に移動し、
そしてTEXTBOX1内のデータ(数値)をクリアして、データ入力待ち(0-9.)の状態になる。

数値入力後エンターキーを押すと、commandbox1上にカーソルが自動移動する。
数値入力せずにエンターキーを押すと、自動的に0.5が入力され、commandbox1上にカーソルが自動移動する。


CheckBox1のチェックがONで値かtureの時、TEXTBOX1は、入力不可。

と動作させたいと考えております。

ユーザフォーム上でのCheckBox1,TEXTBOX1,commandbox1ではなく、
エクセルのワークシート上にコントロールツールボックスからCheckBox1,TEXTBOX1,
commandbox1を貼り付けた状態です。

上述の動作をさせる為のエクセルVBAマクロを教えてください。(エクセル2003使用です)

回答の条件
  • 1人20回まで
  • 13歳以上
  • 登録:2011/11/25 11:45:51
  • 終了:2011/11/28 07:49:32

ベストアンサー

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492011/11/25 13:58:55

どのタイミングで何をやりたいのかがわからなかったのでスルーしてたのですが、
キャンセルして質問文作り直しされたので、パズルがてらやってみました

Private Sub CheckBox1_Click()
    With TextBox1
        If CheckBox1 = True Then
            .Enabled = True: 'テキストボックスを有効化
            .Value = "": 'テキストボックスを空っぽに
            .BackColor = &HC0FFC0: '背景色を元の色に
            .Activate
        Else
            .Enabled = False: 'テキストボックスを無効化
            .BackColor = &HC0C0C0: '判りやすいように背景をグレーに
        End If
    End With
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyCode As MSForms.ReturnInteger)
    ' 数値と小数点以外の文字は無効化するための処理
    If KeyCode >= 48 And KeyCode <= 57 Then
        ' 0-9
    ElseIf KeyCode = 46 And InStr(TextBox1.Value, ".") = 0 Then
        ' 小数点
    Else
        ' その他のキー
        KeyCode = 0
    End If
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ' Enterキーの判定はこちらで行う
    If KeyCode = 13 Then
        CommandButton1.Activate
    End If
End Sub

Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    MsgBox "CommandButton1が押されたよ" & vbCrLf & "値は[" & TextBox1.Value & "]だね"
End Sub
id:windofjuly

テストケースを投稿してしまったので、再投稿してます
人力検索上に表示されているものが最新です

2011/11/25 14:06:27

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません