質問: シートのモジュールに記載する VBAのコードがわからないので質問します。 範囲A1セルからA10セルまでの間で エンターキーを押すと 自動的に1という数字を打ってくれる 例A1セルにエンターキー押すと1 A2セルにエンターキー押すと1 と言った内容です。 これのコードってありませんでしょうか? 空白ならば1を打つというコードは 出来たのですが それだと一度セル内でバックスペースを 打ってからエンターキーを押さないと 空白と認識してくれないので このような質問しました。 回答よろしくお願いします。
回答: Enterキー押し下げは、キー入力受付という根底的な役割を持たせているので、特別なもののようだ。 普通質問のようなのは、シートのEventで拾うタイプなのだが、Enter押し下げのイベントはなく、シートのChangeイベントでも、Enter押し下げ、は拾えない。 Enterキーインイベントは、コントロールのイベントの中でも、テキストボックス以外はなかったように記憶する。 ・便法として、何か文字を1文字なり入れる約束にするとか、 ・Selection Changeイベントで代用できないか。 ・#1のご回答のようなOnKeyメソッドなど しかないでしょう。 ーー やってみたコード ・空白以外の入力なら、1を入れる(1に変える)。 シートイChangeベントに Private Sub Worksheet_Change(ByVal Target As Range) r = Target.Row Application.EnableEvents = False MsgBox "値=" & Target MsgBox r Cells(r, "A") = 1 If Target = "" Then Cells(r, "A") = "1" End If Application.EnableEvents = True End Sub === Onkeyのテスト これが質問のニーズに近いかな。 テンキーのEnterキーだけ押すと1が入る例。 標準モジュールに Sub test02() Application.OnKey "~ ", "Proc1" ’””の中はチルダです End Sub Sub Proc1() MsgBox "エンターキー押し下げ" ActiveCell = 1 End Sub