- 締切済み
【エクセル】 キーを押すと、現在時間が入力されるマクロ
こんばんは。 エクセルのマクロについて質問です。 作業工数管理表を作成しています。 作業を開始時間と終了時間を入力する際、 ダブルクリックすると現在時間が表示されるように下記コードを組んでいますが、 何かキーを打つと自動的に現時間が表示されるようにマクロを組むことはできるでしょうか。 ------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("B4:B200,J4:J200")) Is Nothing Then Exit Sub If ActiveCell = "" Then ActiveCell = Time Cancel = True End If End Sub --------------------- 「Ctrl」+「;」ではなく、ひとつのキーで表示させたいと考えています。 方法がございましたらご教示いただけますようどうぞよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは、 メッセージ:マクロ'[ブック名]![マクロ名]'を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。 という表示が出ましたら、 〔セキュリティの警告〕欄の[オプション]ボタンをクリックします。[Microsoft Officeセキュリティオプション]ダイアログボックスが表示され、[このコンテンツを有効にする]を選択して、[OK]ボタンをクリックします。 なお、[F2]は、既存のショートカットがありますから、押してもぶつからないものが良いと思います。 VBEditor 側で、OnKey をヘルプで調べれば、適当なキーが出てくるはずです。 すでに、回答は出ていますが、念のために、こちらも書かせていただくことにします。 Auto_Open を実行しても、ブックを再度開いても、設定されます。 '標準モジュール '------------------------------------------- Sub Auto_Open() 'SetKey '起動時に設定 Application.OnKey "{F12}", "ShowTime" End Sub Sub Auto_Close() 'Set Key off '終了時に解除 Application.OnKey "{F12}" End Sub Private Sub ShowTime() ActiveCell.Value = Format(Time, "hh:mm") End Sub
- okormazd
- ベストアンサー率50% (1224/2412)
Sheetのコードに下記を Private Sub Worksheet_Activate() Application.OnKey "{F2}", "test" End Sub Private Sub Worksheet_Deactivate() Application.OnKey "{F2}", "" End Sub 標準モジュールに下記を Sub test() Range("A1") = Time End Sub
- rivoisu
- ベストアンサー率36% (97/264)
5行目のコメントは無視してください。削除し忘れました。
- rivoisu
- ベストアンサー率36% (97/264)
Sub FkeySet() Application.OnKey "{F12}", "時刻登録" End Sub Sub FkeyReset() Application.OnKey "{F112}" 'タブキーの設定を解除 End Sub Sub 時刻登録() ActiveCell = Time End Sub FkeySetを起動してからFkeyResetを起動するまでの間はF12に反応して時刻登録が実行されます。 キーを変えたいときはヘルプでOnkeyを調べてみたください。
お礼
こんばんは。 早速の回答ありがとうございます。 いただいたコードを試してみたところ、 FkeySetを実行しF12キーを押下しても 「マクロ'ブック名!時刻登録を実行できません。このブックでマクロが使用できないか、 または全てのマクロが無効になっている可能性があります。」 と表示されます。 [マクロ]より"時刻登録"を実行すると、時間が表示されるのですが。 当方マクロに関してまったくの初心者のため、教えていただいたコードをコピペしておるのですが、何か他に手を加えないといけないでしょうか。 ---------------- Sub FkeySet() Application.OnKey "{F12}", "時刻登録" End Sub Sub FkeyReset() Application.OnKey "{F12}" End Sub Sub 時刻登録() ActiveCell = Time End Sub ------------------- お手数をおかけしますがご教示いただけますようよろしくお願いいたします。
補足
okormazdさん ご回答ありがとうございます。 教えていただいたコードを試してみましたが、 どうにも私の思うように動作せず行き詰ってしまい、返事が遅くなってしまいました。 ごめんなさい。 上記コードはF2キーを押下した際にA1セルに現在時間が表示されるという認識でよろしいでしょうか。 試してみたところ、F2キーを押すと通常のセルの編集になります。 「マクロの実行」をクリックすると、A1セルに現在時刻が表示されました。 私のやり方に、何か根本的な誤りがあるのでしょうか。 ご指摘いただけますようよろしくお願いいたします。