• 締切済み

エクセル マクロ エンターキーについて

シートのモジュールに記載する VBAのコードがわからないので質問します。 範囲A1セルからA10セルまでの間で エンターキーを押すと 自動的に1という数字を打ってくれる 例A1セルにエンターキー押すと1 A2セルにエンターキー押すと1 と言った内容です。 これのコードってありませんでしょうか? 空白ならば1を打つというコードは 出来たのですが それだと一度セル内でバックスペースを 打ってからエンターキーを押さないと 空白と認識してくれないので このような質問しました。 回答よろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

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のテスト これが質問のニーズに近いかな。 https://docs.microsoft.com/ja-jp/office/vba/api/excel.application.onkey テンキーのEnterキーだけ押すと1が入る例。 標準モジュールに Sub test02() Application.OnKey "~ ", "Proc1" ’””の中はチルダです End Sub Sub Proc1() MsgBox "エンターキー押し下げ" ActiveCell = 1 End Sub

  • kkkkkm
  • ベストアンサー率65% (1617/2456)
回答No.1

Application.OnKey "{Enter}", プロシージャ名 で可能ですが、通常のエンター操作ができなくなります。 こちらのサイトを参考にしてください。 https://pc.arthhuman.com/enter/

関連するQ&A

  • エクセル マクロ自動実行について

    エクセルのVBAについて コードがわからないので質問します。 (超初心者です。) 表現が正しいのかわかりませんが 例 セルの範囲 A1セルからA10まで A1セルに1と入力すると 自動でaに変換される A2セルに1と入力すると 自動でaに変換される という形にコードを作りたいのですが コードが行き詰まってしまいわからないです。 すいませんがコードを 書いて頂けないでしょうか? よろしくお願いします。

  • エクセル VBA 条件つきの印刷

    エクセルVBAにおいて、 例えば「セルA1が空白でないシートすべてを印刷する」 このようなコードは可能でしょうか? よろしくお願いします。 (エクセル2000)

  • エンターキーが使えません。

    こんにちわ ソニーのパソコン(sVE151L11N)を昨年の3月に購入 先月からエンターキー バックスペースキー デリートキーが効きません。(エンターキーは2つあるうちの一つだけ効きます。) 何か直す方法があるならば教えて頂けますでしょうか 宜しくお願い致します。 ※OKWaveより補足:「ソニー製品」についての質問です。

  • エクセル2002 シート間の足し算について

    シート1のセルA1 「1」  シート2のセルA1「1」 と記載した場合、 シート3のセルA1 「2」 となるように計算式を入れています。 ここで質問なのですが、 シート1のセルA1 「空白」  シート2のセルA1「空白」 の場合、 シート3のセルA1 「0」 となります。 そこで、シート3のセルA1を「空白」とする方法を教えてください。

  • エクセル マクロで数値が変った時行挿入できますか

    最近VBAを勉強しはじめた初心者です。 簡単なマクロを使ってエクセルシートを作成中しているのですが、以下の部分がどうしても分りません。 (1)ある列(例えばA列)に数字が入っています。 (2)その数字は、セル1個つき1桁から3桁(1から100の場合)です。 (3)「1」「1」「1」と3セル並んでいたり、「2」「2」が2セルだったりと色々です。 (4)この数字が変化したとき、例えば「1」と「2」の間、「2」と「3」の間などに、  自動的に行挿入して、空白行を作りたいと思っています。 マクロでこのような事が可能でしょうか? もし、お分かりになる方がおられましたら、ご教示の程お願いいたします。 どうぞよろしくお願いいたします。

  • エクセルのマクロについての質問です。

    データをまとめるためのシートを追加し、 一つのブックにある全てのシートのBX6~CG15の範囲をA1を起点に下方向にコピー、 同様に同じブックにある全てのシートのC59~M68の範囲をK1を起点に下方向にコピーするというものを組んでみたのですが、C59~M68の範囲をまとめたものには範囲内の空白のセルも入っていますが、BX6~CG15の範囲をまとめたものは空白のセルが消えてしまいます。 この処理のあとに、A列が空白の行を削除するというものを入れたいので、できればどちらの範囲とも空白を入れたまままとめたいのです。 この空白のセルを消さずにまとめる方法がわかりません。 色々と調べて試していますがうまくいきません。 どこを修整するといいのでしょうか? 超初心者でコードの内容がまだまだわかっていません。 簡単な質問かもしれませんがご教示お願いします。 Sub Macro1() Dim sno As Integer Dim I As Integer sno = Worksheets().Count Sheets(1).Select Sheets.Add For I = 2 To sno + 1 Sheets(I).Range("BX6:CG15").Copy Sheets(1).Range("A65535").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste Next For I = 2 To sno + 1 Sheets(I).Range("C59:M68").Copy Sheets(1).Range("L65535").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste Next End Sub

  • ExcelVBAで複数範囲した色セルと、条件で別セルも同色になるようにしたい

    ▼Excel2003を利用でSheet1とSheet2を使っての質問です▼ 下記に簡単に事例を記載いたします。(※実際にはデータが沢山あります) ★Sheet1にはA1~G3範囲横7列縦3行の表があり、表中にはA1、B1、C1、D1が空白でその次からは1~17までの数字が横列に沿って順次入っています。G3セルが最後の数字の17となっています。 横7列に入っている数字はA1、A2、A3、A4空白のセル以外は列毎にセル背景色が異なり全部で7色入っています。 ★次にSheet2に新たにA1~D4範囲内に表を作り、順次セルに数字値を入力し、例えばSheet2のA1セルが1だったら、そのSheet2のA1セル背景色をSheet1の表中の1が入力されているセルと同じ背景色にしたいです。 以上の課題をExcelVBAを使って解決したいのですがご存じの方いらっしゃいましたらVBAでどうプログラミング表現すれば良いか教えていただければ幸いです。 ちなみに私自身はExcelVBAを一度も使ったことがなく初心者です。 恐縮ながらもよろしくお願い申し上げます。

  • エクセルマクロ VBAで順次下セルからコピペする方法

    VBA初心者です。教えてください。 同一bookに"sheet1"と"sheet2"があります。 "sheet1"セルA1のデータ(数字or文字)をコピーして"sheet2"セルA1にペースト。 次に "sheet1"セルA2のデータ(数字or文字)をコピーして"sheet2"セルA2にペースト。 "sheet1"セルA3のデータ(数字or文字)をコピーして"sheet2"セルA3にペースト。 ↓ セルAxにデータがあれば、繰り返し。 ↓ "sheet1"セルAxが空欄になったら終了。 このような処理は、どう記述したらよいのでしょうか? お願いします。教えてください^^;

  • 空白のセルを行削除する。EXCELマクロなのですが・・

    VBA初心者です。 データーをHPから、単純にコピーしてきて、 EXCELに貼り付けています。 フィルターをかけても、画像かなにかがセルに張り付いているのか、 空白行をすべて削除できません。 いろいろ試して(HPから、空白セルの行削除について書かれてあるマクロを貼り付けて)動いたのが、このVBAです。 しかし、遅いので、早いVBAに簡略できればいいのですが。。 大体、1000行ぐらいの文字を貼り付けて、3/1ぐらいが空白行です。A行のセルの空白のみを、削除したいのですが。  まったくの素人なので、わかりません。 どうかよろしくお願いいたします。 Sub 空白の削除() x% = Worksheets("sheet1").Range("A65536").End(xlUp).Row For i = x% To 1 Step -1 If Worksheets("sheet1").Cells(i, 1).Value = "" Then Worksheets("sheet1").Rows(i).Delete Next End Sub

  • エクセル:シート1のセルA1が0でなければ任意のマクロを実行したい

    エクセルマクロ(VBA)初心者です。よろしくお願いします。 (1)エクセルのsheet1のセルA1の値が”0(ゼロ)”でなければ、そのシート上で任意のマクロを実行し、ゼロであれば実行せずにsheet2へとぶ (2)同じようにsheet2のセルA1がゼロでなければ実効し、ゼロでなければsheet3へとぶ・・・の繰り返し(sheet50まであります。) このようなマクロ(標準モジュール)の書き方を教えてください。 よろしくお願いいたします。

専門家に質問してみよう