🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

985閲覧

VBA  マクロ

m_ao

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2021/02/20 04:30

編集2021/02/23 04:44

やりたいこと
毎回マクロ実行用コマンドボタン表示させたい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こういうことですか?

VBA

1Dim bt As Button 2For Each bt In trgtSh.Buttons 3 With trgtSh2.Buttons.Add(bt.Left, bt.Top, bt.Width, bt.Height) 4 .Caption = bt.Caption 5 .OnAction = bt.OnAction 6 End With 7Next

<追記>
こういうことですか?

VBA

1Private Sub CommandButton1_Click() 2 Dim trgtSh As Worksheet 3 Dim trgtSh2 As Worksheet 4 Set trgtSh = Worksheets("入力") 5 Set trgtSh2 = Worksheets("グラフ") 6 Dim dataRng As Range 7 Set dataRng = trgtSh.Range("A1:D4") 8 Dim pasteRng As Range 9 Set pasteRng = trgtSh2.Range("G2") 10 11 'グラフ作成 12 With trgtSh2.Shapes.AddChart.Chart 13 .ChartType = xlColumnClustered 14 .SetSourceData dataRng 15 .HasTitle = True 16 .ChartTitle.Text = "売上" 17 18 .Parent.Top = pasteRng.Top 19 .Parent.Left = pasteRng.Left 20 End With 21 22 'ボタン追加(位置の準備) 23 Dim wLeft, wTop 24 With trgtSh2.Shapes(1) 25 wLeft = .Left + .Width + 10 26 wTop = .Top + 10 27 End With 28 29 '1つめのボタン 30 Dim bt1 As Button 31 Set bt1 = trgtSh2.Buttons.Add(wLeft, wTop, 100, 100) 32 With bt1 33 .Caption = "ボタン名1" 34 .OnAction = "Sub名1" 35 .AutoSize = True 36 End With 37 38 '2つめのボタン 39 Dim bt2 As Button 40 wTop = wTop + bt1.Height + 10 41 Set bt2 = trgtSh2.Buttons.Add(wLeft, wTop, 100, 100) 42 With bt2 43 .Caption = "ボタン名2" 44 .OnAction = "Sub名2" 45 .AutoSize = True 46 End With 47 48End Sub 49

投稿2021/02/20 05:07

編集2021/02/20 11:22
jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m_ao

2021/02/20 07:03

ありがとうございました。はい、ボタンが作成されました。 すみませんが教えてください。 位置は指定できますか?グラフの横に表示したく。 また今回1個しかボタンが作成されませんでした。もう1個作成したい場合は、上記のコードをbt2として追記作成するのでしょうか? 今後作成しようとするマクロは、bt.OnActionという名前で作成すればいいのでしょうか?
jinoji

2021/02/20 07:16

まず、前提がよくわからないのですが、 「入力」「グラフ」の2つのシートがある 「グラフ」シートは、最初は空 「入力」シートにはデータが入力されていて、ボタンが1つある 「入力」シートのボタンを押すと、「UserForm1」というフォームが表示される 「UserForm1」にはボタンが1つある 「UserForm1」のボタンを押すと、「グラフ」シートにグラフが追加される そして、その後に「グラフ」シートに、ボタンを2つ追加させたい。 こういうことですか?
jinoji

2021/02/20 07:32

私が書いたコードは、 「入力」シートにあるボタンと同じものを「グラフ」シートにも作る、という動きをしています。 1個しかボタンが作成されなかったということは、「入力」シートに1個だけボタンがあったということ。 ボタンの位置と大きさも「入力」シートのボタンと同じにしていますので、 ( Add(bt.Left, bt.Top, bt.Width, bt.Height)のところ。btは「入力」シートのボタン) 位置を変えたいのであれば、bt.Left, bt.Top のところを、 wLeft = 追加したグラフ.Left + 追加したグラフ.Width + 多少の隙間 wTop= 追加したグラフ.Top + 多少の調整 みたいにするとよいと思います。
m_ao

2021/02/20 11:01

回答ありがとうございました。説明が不足し申し訳ありませんでした。 「グラフ」シートにグラフを作成し、さらに新たに2個コマンドボタンを作成しようとしていました。
jinoji

2021/02/20 13:03

回答を追記しました。あとは、ボタン名1,ボタン名2のところをデータ比較1,データ比較2にして、Sub名1、Sub名2のところを、ボタンを押したときに走らせる処理の関数名にしたら良いはずです。
m_ao

2021/02/20 23:19

どうもありがとうございました。こちらで無事にできました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問