• ベストアンサー

VBAで指定したボタンを押す

VBA初心者ですが、コマンドボタンを作ってボタンを押すと Ctrl + : を実行して時間を記入するようにしたいのですがうまく動作させることができません。 マクロの記録機能で試してみたのですが以下のようになりボタンを押してもうまく動作しませんでした。   Sub Macro1() ActiveCell.FormulaR1C1 = "16:33" End Sub 簡単な文例やヒントなどありましたら宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.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」のようなモジュール名は使えません。 そのへんを混同されているため「うまく動作させることができない」のではないでしょうか。(想像です) さらに質問のマクロではアクティブセルに時刻を書き込もうとされていますが、これは問題ありませんか? シート上の必要データが書き込まれたセルをアクティブにしていると、ボタンをクリックした瞬間にデータが時刻で上書きされてしまいますよ。

wavewii
質問者

お礼

いま教えていただいたコマンド試してみました。 Private Sub CommandButton1_Click()  ActiveCell.Value = Format(Time, "h:mm") End Sub   おかげさまでうまく動かすことができました。 誠にありがとうございました。

関連するQ&A

  • ワークシート関数にVBAでセルを指定するには?

    FormulaR1C1ではなく Range形式でVBAでワークシート関数をセルにいれるコードを書くにはどうすればいいでしょう? Sub Macro() ActiveCell.FormulaR1C1 = "=LEN(RC[-1])" End Sub これを Sub Macro() ActiveCell.FormulaR1C1 = "=LEN(a1)" End Sub こうすると、 数式バーには、=LEN('a1')と入っており、 セルの値は#NAME? になります。 アポストロフィーが余計なのですがどうすれば取れますか?

  • PCのマクロについて

    Sub Macro1() ' ' Macro1 Macro ' ' ActiveCell.FormulaR1C1 = "○" Range("F5").Select End Sub Sub Macro2() ' ' Macro2 Macro ' ' ActiveCell.FormulaR1C1 = "●" Range("F5").Select End Sub こんな感じでマクロ入れたんですが図でわかると思うのですが4段目で確認未のボタンを押すと1段目のセルに選択が移動してしまいます。ボタンを押した際に最初に選択したセルから移動しないようにするにはどうすればよいですか?

  • マクロボタンを押すたびに違う動作をしたい

    エクセルのボタンにマクロを割り当てました。 ボタンの1回目のクリック、2回目のクリックと行うとします。 その時1回目のクリックの時にはこの動作、 2回目のクリックの時にはこの動作と、 押すたびに動作を変えていくとこは可能でしょうか? 着信と言うボタンを作っておいて、クリックのたびにセルを移動して、 now()関数で、着信時間を記録しておきたいのです。 ボタンを幾つも分けてしまうと、大変なことになってしまうので、 Caseで分岐をしたいと思いました。 対象のセルが、空白ではない判断はどの様に記述するのでしょうか? その後、次の処理に対して何をすればよいのでしょうか? Caseの基本的な使い方と、空白セルの判別方法を教えてください。 Private Sub CommandButton1_Click() ' ' Macro1 Macro ' マクロ記録日 : 2008/6/20 ユーザー名 : ' ' Range("B2").Select ' Select Case 1 ' Case Is = FormulaR1C1 = "false" ActiveCell.FormulaR1C1 = "=NOW()" ' Case Else ' FormulaR1C2 = "=NOW()" ' End Select End Sub これで、時間だけはクリックすると表示されます。

  • 記号をマクロで記録することは不可能か?

    記号をマクロで記録することは不可能か? エクセル2003を使用しています。 マクロの記録→挿入→記号と特殊文字で ハートを挿入し、マクロの記録の終了をして標準モジュールを見たのですが Sub Macro1() ActiveCell.FormulaR1C1 = "?" Range("a1").Select End Sub となります。 セルにはハートが入っています。 そのあと、Macro1を実行すると、?がセルに挿入されました。 VBAで記号を挿入することは不可能のなのでしょうか?

  • Excel VBA セルの指定の方法

    VBAの初心者です。処理1 のサブルーチンを使わずに直接記述すれば、エラーはでませんが、以下のように記述すればエラーが出てしまいます。宜しくお願いします。 Sub Macro10() i = 1 Do Until Cells(i, 1) = "" 処理1 i = i + 1 Loop End Sub Sub 処理1() Cells(i, 2).Select  ← ここでエラーになります。        ActiveCell.FormulaR1C1 = "◎" End Sub

  • エクセルのVBAのことで

    コマンドボタンで「Macro1」というマクロを実行させるVBAは以下だと思いますが。 Private Sub CommandButton1_Click() Call Macro1 End Sub 上記に、Sheet1・Sheet2・Sheet3に対して実行するということを加えると、どんなふうになるでしょうか。

  • 検索はマクロで記録できないのでしょうか?

    エクセル2007です。 マクロの記録ボタンを押して、CTRL+Fで検索を立ち上げて、文字を検索して、マクロを終了したら、 Sub Macro1() ' Macro1 Macro End Sub としか記録されてませんでした。 検索はマクロで記録できないのでしょうか? ご回答よろしくお願いします。

  • ■ エクセルマクロについてです。初級?

    エクセルのマクロでデスクトップにあるエクセルファイルを開くにはどうしたらいいのでしょうか? 現在は、エクセルファイルA.xls B.xlsという2つを開いていて、マクロを実行することができるのですが、これをA.xlsだけ開いている上体で、実行したいのです。 なので、デスクトップに置いてあるB.xlsファイルを開くコマンド?というか、関数が知りたいのですが、どうしたらいいのでしょうか? 現在はこのような感じになっております。 Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2008/9/10 ユーザー名 : ' ' ActiveCell.FormulaR1C1 = "12345" Range("G17").Select ActiveCell.FormulaR1C1 = "129876" Range("G18").Select Windows("B.xls").Activate Range("N16").Select ActiveCell.FormulaR1C1 = "8/4/2008" Range("N17").Select ActiveWorkbook.Save Range("O16").Select ActiveWorkbook.Save ActiveWindow.Close End Sub

  • 列幅、行の高さを指定するマクロ

    元マクロ初心者(今はほとんど忘れています)です。 列幅、行の高さを変更するマクロを以前作りました。 セルに指定する列幅を入力するのですが、 最近100以上の値の時はスキップされることに気づきました。 100以上の値でも処理されるようにするにはどうすればよいでしょうか。 Sub 列幅変更マクロ() ' ' Macro1 Macro ' マクロ記録日 : 2004/1/31 ユーザー名 : ' 列幅の変更 ' Keyboard Shortcut: Ctrl+l ' If MsgBox("→:列幅を変更します。右の方向にセル内の数値に従って処理しています。一番右のセルに半角で「@」を終わりの印として入力してください。", vbOK) = 1 Then Do Until ActiveCell.Value = "@" If ActiveCell.Value < 100 Then If ActiveCell.Value > 0 Then Selection.ColumnWidth = ActiveCell.Value End If End If ActiveCell.Offset(0, 1).Select Loop End If End Sub Sub 行の高さ変更マクロ() ' ' Macro2 Macro ' マクロ記録日 : 2004/2/1 ユーザー名 : ' 行の高さ変更 ' Keyboard Shortcut: Ctrl+p ' If MsgBox("↓:行の高さを変更します。下の方向にセル内の数値に従って処理しています。一番下のセルに半角で「@」を終わりの印として入力してください。", vbOK) = 1 Then Do Until ActiveCell.Value = "@" If ActiveCell.Value < 100 Then If ActiveCell.Value > 0 Then Selection.RowHeight = ActiveCell.Value End If End If ActiveCell.Offset(1, 0).Select Loop End If End Sub

  • ユーザーフォームのコンボボックスの使い方

    Sub Macro1() Range("A1").Select ActiveCell.FormulaR1C1 = "あ" End Sub と言うマクロがあり、 UserForm1にComboBox1を作りました。 このComboBox1の右矢印をクリックしMacro1を呼び出し選んで実行させたいです。 どうすればいいのでしょうか? よろしくお願いします。