質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

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

Q&A

解決済

2回答

31620閲覧

VBAで作成したマクロボタンを処理ごとコピーする方法が分からず困っています。

merci_children

総合スコア44

VBA

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

0グッド

0クリップ

投稿2018/11/11 13:35

編集2018/11/11 14:05

VBAで作成したマクロボタンを処理ごとコピーする方法について、わからず困っています。

以下画面のような処理を考えています。
・別シートからセルをコピーする。
・コピーした値を対象のシートに貼り付けする。
・貼り付けた行数分[ボタン1]をコピーする。
※処理ごとコピーする。
イメージ説明

初心者で申し訳ないですが、教えていただけると嬉しいです。
よろしくお願いいたします。

>imiihito様
ご返信ありがとうございます。追記いたします。
1.ボタンの種類は現在はフォームコントロールです。
しかし、Activeコントロールとフォームコントロールの違いが分かっていないため、どちらかでできるのであれば、出来るほうに変更します。
2.元の処理が記載されているブックと、コピー後のボタンの属しているブックは同一です。
3.すべて同じ処理です。
(ちなみにすべて同じ処理でないと実現は不可ですか?)

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

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

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

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

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

imihito

2018/11/11 13:52

対象によってできる・できないがあるため、質問に情報の追記をお願いします。①ボタンの種類:フォームコントロールのボタンかActiveXコントロールのボタンか / ②元の処理が記載されているブック・コピー後のボタンの属しているブック / ③ 処理の内容:全て同じ処理かそうでは無いか
guest

回答2

0

ベストアンサー

質問への追記ありがとうございます。

追記された条件であれば、ボタンの追加及び追加したボタンへの処理の紐付けが可能です。


フォームコントロールのボタンや、ExcelVBAerさんが言及されている図形(Shape)にマクロを登録した場合ですが、
登録した情報はどこに保存されるかというと、その図形のOnActionプロパティに、登録したプロシージャの名前が文字列で設定されます。

ユーザーが図形をクリックしたときは、OnActionプロパティに設定されているプロシージャをExcelが実行する、という形で処理が動きます。

そのため、必要なだけボタンを追加・コピーし、それらのOnActionプロパティに実行したいプロシージャの名前を設定すれば、ボタンのコピー・処理への紐付けができます(この場合、処理のコピーというよりは、各ボタンで同じ処理を参照する状態となります)。


(ちなみにすべて同じ処理でないと実現は不可ですか?)

各ボタンで同じ処理を参照するため、コードそのものは同じである必要があります。

しかし、ApplicationオブジェクトのCallerプロパティを使用することで、クリックされた図形を取得できるため、図形の情報を元に処理を変更することは可能です。

vba

1'OnActionで実行されたプロシージャ内でクリックされた図形を取得する 2Dim btnShp As Excel.Shape 3Set btnShp = ActiveSheet.Shapes.Item(Application.Caller)

図形クリックで処理が起動したとき、Application.Callerには、その図形の名前が入ります。
クリックされたということは、最前面のシート(ActiveSheet)にその図形が存在すると期待出来るため、ActiveSheet.Shapes.Item()でその図形が取得できるはずです。

投稿2018/11/12 13:55

imihito

総合スコア2166

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

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

merci_children

2018/11/13 13:15

ご回答ありがとうございます。 アドバイスの通り、ボタンのコピーをすることでうまく動作しました。 ご丁寧な回答ありがとうございます。勉強になりました。
guest

0

ボタンをシェイプにして、マクロを登録しておいて、
シェイプをコピーする方法ではいかがでしょう?

個人的には、フォームやActiveXのボタンより、
デザインしやすいシェイプにマクロ登録の方が
扱いやすくていいかと。

投稿2018/11/12 00:04

ExcelVBAer

総合スコア1175

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

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

merci_children

2018/11/13 13:17

ご回答ありがとうございます。 シェイプにもマクロ登録をすることができるのですね。 勉強になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問