- ベストアンサー
VBAで指定したボタンを押す
VBA初心者ですが、コマンドボタンを作ってボタンを押すと Ctrl + : を実行して時間を記入するようにしたいのですがうまく動作させることができません。 マクロの記録機能で試してみたのですが以下のようになりボタンを押してもうまく動作しませんでした。 Sub Macro1() ActiveCell.FormulaR1C1 = "16:33" End Sub 簡単な文例やヒントなどありましたら宜しくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>うまく動作させることができません。 何がどううまくいかないのですか? それがないと回答する側が色々想定して書かなければなりませんから、双方にとってムダが多くなります まずマクロは Sub Macro1() ActiveCell.Value = Format(Time, "h:mm") End Sub でよいと思います。Sendkeysメソッドを使う必要もないでしょう でもこのマクロの場合コマンドボタンは「フォーム」のコマンドボタンでなければなりません。 質問から想像してコマンドボタンはシート上に配置するのだと思いますが、コマンドボタンには「フォーム」「コントロールツールボックス」の2種類あるのはご存じですか。(Office2003まで。2007なら後者はActiveXコントロールと名前が変わっています。なおそれとは別に「ユーザーフォーム」のコマンドボタンもあります) 「フォーム」のコマンドボタンはシート上に配置してから、右クリック→マクロの登録でマクロを割り当てることができます。上のマクロもコマンドボタンに割り当てれば動きます 一方「コントロールツールボックス」のコマンドボタンをシート上に配置した場合は、ボタンを右クリック→コードの表示で開くVBE画面に Private Sub CommandButton1_Click() ActiveCell.Value = Format(Time, "h:mm") End Sub と書かなければなりません。モジュール名はイベントによって決まっていますから普通「Macro1」のようなモジュール名は使えません。 そのへんを混同されているため「うまく動作させることができない」のではないでしょうか。(想像です) さらに質問のマクロではアクティブセルに時刻を書き込もうとされていますが、これは問題ありませんか? シート上の必要データが書き込まれたセルをアクティブにしていると、ボタンをクリックした瞬間にデータが時刻で上書きされてしまいますよ。
お礼
いま教えていただいたコマンド試してみました。 Private Sub CommandButton1_Click() ActiveCell.Value = Format(Time, "h:mm") End Sub おかげさまでうまく動かすことができました。 誠にありがとうございました。