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

Excel初心者です。

普段の登録業務はコマンドで登録ボタンがあるのですが
入力が終わったら最終のセルでエンタキーを押すと
登録マクロを作動するやり方が知りたいです。

range("B6")で入力しエンタキーを押すと登録マクロが起動するようにするには
どうすればいいのでしょうか?
アプリケーションonkye設定はできているのですが
エンタキーをソースコマンドを登録マクロにいれればいいのでしょうか?
拙い文章で申し訳ございませんがご回答いただければと思います。

「VBA 登録ボタンを省略してエンターキー」の質問画像

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

  • ご返答ありがとうございます。

    実際に登録マクロに書いてみたのですが
    作動しないのが結果でした。
    実際に実用的にしたいのですが…

    欲しい答えとしては
    「登録」マクロに「エンターキー」を入れる
    もしくは
    「エンターキー」を押して「登録」マクロをcallするのか…
    どちらもやってはみたのですが…
    個別の作動はするのですが、実際に「B6」にカーソルを当ててエンターキーをおしてもだめだったので
    なにかソースコードが足りなかったのかがしりたいです。

    拙い文章で申し訳ありません。
    よろしくお願いいたします

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/07/10 13:13
  • ご返答いただきます。

    では実際に作動させるのではuserfomeで
    表記を作って入力のほうが安全ということですね。

    一度形を作って動作確認と
    効率になるのか一度試してみたいとおもいます!
    ありがとうございます!(´・ω・`)

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/07/10 13:26

A 回答 (4件)

こんばんは。



Userform作っちゃうのがオススメですが、とりえず OnKey から離れた方が吉です。
OnKey は独自のマクロ呼び出しショートカットキーを作成するってこと。
頻繁に使うであろう Enter キーに割当してしまえば、悲劇の予感しかないです。

この用途なら Worksheet の Change イベントで代用できませんか?
[VBA イベント] および [Application.EnableEvents] についても調べて下さい。

1. シート選択タブで[売上]シート上で右クリック
2. コードの表示

以上で、[売上]シートのシートモジュールが開きます
以下のソースをコピペしてください。

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$B$6" Then
    '
    '/ 入力チェック(簡易版)
    '/ とりあえず CountA ワークシート関数で B3:B6 でデータ個数が
    '/ 4であれば空なしとしました
    '
    If WorksheetFunction.CountA(Range("B3:B6")) = 4 Then
      '/ ↓イベントの多重発生を抑止する
      Application.EnableEvents = False
      Call 売上登録
      Application.EnableEvents = True
    End If
    '
  End If

End Sub
    • good
    • 1
この回答へのお礼

解決しました

ご返答頂きまして誠にありがとうございます。

確かに実際の起動に不便を少し感じるのと
設定を少しずらすとほかのエクセルにも
影響が出ましたので…
Onkeyからは離れます。

改めてシートモジュールに関して勉強しなおして
より効率化を図ってみようとおもいます。
本当にありがとうございます!

お礼日時:2022/07/11 05:54

「アプリケーションonkye設定はできている」って書いてあったので、「ここまでは出来ているんだろ~な」って思っていたのですが、どうやら違うようですね!!



サンプルを書いてみました。
下記の DefineOnKey を実行するとOnKeyの設定ができます。よって、この状態で、Enterキーを押下すると"CALLするマクロ名"が実行されるようになります。要するに「Onkye設定はできている」状態です。

この状態で、Enterキーを押すと"CALLするマクロ名"が実行されますので、自分のやりたいことが出来ているか、その他の操作に不便はないかを確認してみて下さい。
ちなみに、この状態だと、No.2さんが云う通り、通常の操作に不便を感じると思うので、"ResetOnKey"を実行して、設定を解除することをお勧めします。

Sub DefineOnKey()
Application.OnKey "~", "CALLするマクロ名"
End Sub

Sub CALLするマクロ名()
MsgBox "マクロが実行されました。"
End Sub

Sub ResetOnKey()
Application.OnKey "~"
End Sub
    • good
    • 0
この回答へのお礼

ありがとう

改めましてご返答ありがとうございます!

早速やってみます!
お忙しい中でのご返答ありがとうございました(ヾ(´・ω・`)

なんとかやってみます!

お礼日時:2022/07/10 14:19

こんにちは。



enterキーへのonkeyによるマクロ割当は現実的ではないですよ。入力に支障がでたり。
それを制御するイベントが用意されていませんから。

なので、そのような動作を実装するにはenter、exit、keydownイベントのあるuserformを利用することをオススメします。
この回答への補足あり
    • good
    • 0

>エンタキーをソースコマンドを登録マクロにいれればいいのでしょうか?



上記のことは実際にやってみたのでしょうか?
やってみた結果「実用的でない」と判断したから、この質問に至っていると信じているのですが、その場合、何がダメだったのかを具体的に書くべきです。その上で解決方法を質問した方が、回答は得やすいですよ。
「書くのが面倒くさい」というのであれば、それはそれで良いのですが・・・。
この回答への補足あり
    • good
    • 0

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