• 締切済み

複数のボタンを同一の動作にするために、まとめて書くには?

22歳男性です。VBAについて質問があります。 エクセルシート上に複数のボタンを配置しました。ボタンは複数あるのですが全て同一の動作にすることは可能なのでしょうか? 今は以下のように全てに書いています。 sub ボタン1_Click() msgbox "こんばんは" End Sub Sub ボタン2_Click() msgbox "こんばんは" End Sub ・・・・・ でも、これだと全てのボタンに書かなくてはならないので、手間がかかりまくります。 なんとかまとめて書くことはできないでしょうか?

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

フォームのボタンならば ボタン1をシートに貼り付けます マクロの登録ダイアログで 新規作成を行い Sub ボタン1_Click()   MsgBox "こんばんは" End Sub を定義します ボタン2をシートに張ります マクロの登録ダイアログで 『ボタン1_Click』を『ボタン2_Click』と表示されている下ににあるリストから選択して OKをクリックします これで『ボタン1』『ボタン2』どちらを押しても『ボタン1_Click()』が実行されます 貼り付けてしまった後で変更したいなら ボタンなどを右クリックして マクロの登録 から変更しましょう

関連するQ&A

  • 複数シートのボタンに同一の動作をさせたい

    ExcelのVBAで、表題の動作をさせたいと考えています。 複数のシート(Sheet1、Sheet2、Sheet3…)にそれぞれ配置したボタンに、 全て同じ動作をさせるのが目的です。 ただし、動作内容そのものは、Generalで定義するなどで一箇所で行うようにしたいです。 シート数が多く、それぞれにボタンを配置するのはいいとして 全てのシートのセクションでボタン動作を一つ一つ定義するのが面倒なため、 ここで質問させて頂いています。 単純に、各シートのボタンの名前をfuncButton1とし、Generalセクションに Public宣言して動作を書きましたが動きませんでした。 (↑ニュアンスとしてこういうやり方をしたい、という事です) どうかご教授お願いします。

  • エクセルVBAでフォームのボタンとコントロールツールボックスのコマンドボタン

    エクセルVBAでフォームのボタンとコントロールツールボックスのコマンドボタンについて教えてください。 実はこれまでフォームしか使ったことがないのですが、フォームのボタンですと、下記のように一つのプロシージャを多数のボタンから呼び出し、呼び出したボタンにより異なった指示が出来ます。 Sub test() x = Application.Caller Select Case x Case "ボタン 1" MsgBox 1 Case "ボタン 2" MsgBox 2 Case "ボタン 3" MsgBox 3 Case "ボタン 4" MsgBox 4 End Select End Sub コントロールツールボックスは Private Sub CommandButton1_Click() MsgBox 1 End Sub Private Sub CommandButton2_Click() MsgBox 2 End Sub のようにコマンドボタンごとにひとつずつ書くしかないのでしょうか?

  • Excel(VBA)シート上のコマンドボタンクリック時に

    Sheet1に配置したのコマンドボタン(cmd1)を押した時に, Sheet2上に配置したコマンドボタン(cmd2)を押した時と 同じ処理を走らせたいのですが。 Sheet2に、 Private Sub cmd2_Click() MsgBox"処理が走りました" End Sub Sheet1に、 Private Sub cmd1_Click() WorkSheets("Sheet2").Shapes("cmd2").??? End Sub ???に色々候補があがりますが、この候補の中のどれかを使うことは可能ですか? Sheet2の cmd2_Click() 以下の処理を、標準モジュールに書いて呼ぶしかないのかと 思ったのですが、直接、cmd1_Click() から cmd2_Click()の処理を呼べたらいいなぁと 思って質問させて頂きました。 可能か、不可能か教えてください。 バカな質問だということは心得ておりますが、当方、初心者ゆえ何分お許し下さい。 Ver.2000

  • Access 1つのイベントに複数のVBA

    こんにちは! Accessについて、質問です!! あるフォームの『修正』というボタンのクリック時プロパティに、以下のVBAが組み込まれています。 Private Sub 修正_Click() CopyRec End Sub ここに新たに、 『メッセージボックス』『ウインドウを閉じる』VBAを加えたいのです。 現状として…… (1)Private Sub 修正_Click() CopyRec MsgBox "修正が完了しました" End Sub (2)Option Compare Database (下線) Private Sub 修正_Click() CopyRec End Sub Option Compare Database (下線) MsgBox "修正が完了しました" End Sub 上記(1)(2)は、失敗しています。 質問は2つあります。 (1)1つのプロパティに、複数のVBAを設定するのは可能ですか?可能なら、どのようにVBAを入力すれば正常作動するのでしょうか? (2)『ウインドウを閉じる』VBAの書き方が調べても分かりませんでした……。どのように入力するのですか? どちらか1つが分かる方でもかまいません。 回答よろしくお願いします!

  • ExcelVBAで複数のコマンドボタンを一つに!

    ユーザーフォーム上にたくさんのボタンを配置しているのですが、 すべて同じ動作なので、一つにまとめたいです。 どのように記述したらよいでしょうか? Private Sub CommandButton1_Click() Selection.Interior.color = select_Color End Sub Private Sub CommandButton2_Click() Selection.Interior.color = select_Color End Sub Private Sub CommandButton3_Click() Selection.Interior.color = select_Color End Sub Private Sub CommandButton4_Click() Selection.Interior.color = select_Color End Sub

  • Excel VBAでのシートの削除について

    Excel VBAで、シート上に配置されたボタンをクリックすることで、メッセージを出さずにそのシートの削除をしたいと思っています。 サンプルとして、シート上(例えばSheet1)にボタンを1個配置し、 ------------------------------------------------------- Private Sub CommandButton1_Click() Application.DisplayAlerts = False Delete Application.DisplayAlerts = True End Sub ------------------------------------------------------- のようにすると、オートメーションエラーが起きます。 そこで、 Application.DisplayAlerts = True をコメントアウトしてやれば実行はできるのですが、その後別のシートで処理を行う場合には、再度メッセージを表示してほしいと思っています。 ためしに、Sheet1削除後にアクティブになるSheet2に次のようなコードを記述しました。Sheet1同様、シート上にボタンを1個配置しています。 ------------------------------------------------------- Private Sub CommandButton1_Click() MsgBox Application.DisplayAlerts End Sub Private Sub Worksheet_Activate() MsgBox "次に出るメッセージはアクティブ直後のDisplayAlerts設定。" MsgBox Application.DisplayAlerts Application.DisplayAlerts = True MsgBox "次に出るメッセージは変更後のDisplayAlerts設定。" MsgBox Application.DisplayAlerts End Sub ------------------------------------------------------- こうすれば、Sheet1削除後、アクティブになった直後はDisplayAlertsがFalse。その後設定変更してTrueになるかとおもったのですが、結果はFalseでした。しかしその後、ボタンをクリックするとTrueが返ってきました。 いろいろ調べましたが、なぜこのような結果になるのかわかりません。よろしくお願いいたします。

  • ボタンを押したら値に+1したいです。

    こんにちは。 すいませんが、教えてください。 エクセルのシートにボタンをつけて そのボタンを押したらA1のセルの例えば2 という値に+1したいです。 自分でもやってみたのですが、 Private Sub ボタン1_Click() A1 = A1 + 1 End Sub しか思いつきませんでした。 どうぞよろしくお願いいたします。

  • 複数のコマンドボタン(VBAで)を一つにまとめたい。

    複数のコマンドボタン(VBAで)を一つにまとめたい。 Private Sub CommandButton1_Click() Application.Goto Reference:=Range("A7"), Scroll:=True End Sub Private Sub CommandButton2_Click() Application.Goto Reference:=Range("A29"), Scroll:=True End Sub Private Sub CommandButton3_Click() Application.Goto Reference:=Range("A51"), Scroll:=True End Sub Private Sub CommandButton4_Click() Application.Goto Reference:=Range("A73"), Scroll:=True End Sub Private Sub CommandButton5_Click() Application.Goto Reference:=Range("A95"), Scroll:=True End Sub Private Sub CommandButton6_Click() Application.Goto Reference:=Range("A117"), Scroll:=True End Sub Private Sub CommandButton7_Click() Application.Goto Reference:=Range("A139"), Scroll:=True End Sub Private Sub CommandButton8_Click() Application.Goto Reference:=Range("A161"), Scroll:=True End Sub Private Sub CommandButton9_Click() Application.Goto Reference:=Range("A183"), Scroll:=True End Sub Private Sub CommandButton10_Click() Application.Goto Reference:=Range("A205"), Scroll:=True End Sub Private Sub CommandButton11_Click() Application.Goto Reference:=Range("A227"), Scroll:=True End Sub 上記のように複数のコマンドボタンを関数化して一つにすることは出来るでしょうか?

  • Excel2003 VBA ボタンを押したらフォームを開く

    オブジェクト名”きほん”というフォームをつくって、表示させるためのボタンを”検索”というシートに作りました。 なぜかエラーが出ます。 msgbox的なイメージで考えていたのですが、前提の定義がいるっぽいエラーメッセージが入ってます。 どうしたらいいと思いますか? (”検索”内のボタンは、ボタン441という名称です。) Sub ボタン441_Click() Docmd.OpenForm ("きほん") End Sub

  • マクロで作ったボタンのサイズが小さくなる

    エクセルにて、以下の2種類のボタンを作成しました。 1、ボタンを押すとプリントアウトへ進む (Private Sub ×△□_Click() Application.Dialogs(xlDialogPrint).Show End Sub) 2、ボタンを押すとあるセルの数値をインクリメントする (Private Sub inc_Click() Sheets("○×△").Select Cells(6, 13) = Cells(6, 13) + 1 End Sub ) これらのマクロを作成しテストした際は、全く問題なく動作しました。 しかし、同エクセル内の別シートに参照となるデータを加えながら 普段使っているのですが、たまにボタンを押して操作すると、 ボタンのサイズが少し小さくなってしまうのです。 (ボタンとは、自分で作成したコマンドボタンです) プリントアウトやインクリメントを繰り返していくと、 どんどんボタンが小さくなり、クリックできないくらいのサイズに なってしまいます。なぜこのような事が起こるのでしょうか。 自分でいろいろ試してみたつもりなのですが、 上記現象が再現する場合と再現しない場合があり、 どういう時に再現しているのかも掴めません。 もし、心当たりのある何かがございましたら、 ぜひ教えてください。 宜しくお願いします。

専門家に質問してみよう