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

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

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

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

Q&A

解決済

2回答

6132閲覧

エクセルVBA ボタンをクリックしたときに、ボタンのキャプションを変えたい

MichiroSakamoto

総合スコア12

VBA

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

0グッド

0クリップ

投稿2018/04/18 00:28

1:ボタンをエクセルのシート状に配置する
2:ボタンのキャプションには何も書いていない状態にする
3:ボタンを押したら、キャプションに"check"と入るようする
としたいのですが、どのようにしたらいいでしょうか。

1:ボタンをエクセルのシート状に配置して、2:ボタンのキャプションには何も書いていない状態にするために以下のようにしました。

Sub Sample_Button1() Dim c As Range Set c = ActiveCell Debug.Print (c.Value) Application.ScreenUpdating = False With ActiveSheet.Buttons.Add(c.Left + 3, c.Top + 3, c.Width - 6, c.Height - 6) .OnAction = "checkRecord" .Caption = "" End With Application.ScreenUpdating = True End Sub

3:押されたときにcheckRecordが呼ばれます。ここが上手く出来ません。

Sub checkRecord() Debug.Print ("おされた") '以下の書き方だとうまくいかない' Application.Caller.Caption = "check" End Sub

よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

ボタンを動的に生成するときに名前Nameを設定。
イベント側ではその名前、もしくはApplication.Callerで取得した名前でボタンコントロールを参照するとよいです。
但しボタン生成を複数回行うと同じ名前でボタンが生成されてしまうので、セル位置を名前に埋め込むなど工夫が必要です。

VBA

1Sub Sample_Button1() 2 Dim c As Range 3 Set c = ActiveCell 4 Debug.Print (c.Value) 5 Application.ScreenUpdating = False 6 With ActiveSheet.Buttons.Add(c.Left + 3, c.Top + 3, c.Width - 6, c.Height - 6) 7 .Name = "btnCheck" ' 名前を設定 8 .OnAction = "checkRecord" 9 .Caption = "" 10 End With 11 Application.ScreenUpdating = True 12End Sub 13 14Sub checkRecord() 15 Debug.Print ("おされた") 16 ActiveSheet.Buttons("btnCheck").Caption = "check" 17 ' もしくは 18 'ActiveSheet.Buttons(Application.Caller).Caption = "check" 19End Sub 20

投稿2018/04/18 00:58

ttyp03

総合スコア16996

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

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

MichiroSakamoto

2018/04/19 02:09

参考になりました。ありがとうございます。
guest

0

ボタンが押された時に Application.Caller に何が入ってるのか分かりませんか?

ブレークポイント、ローカルウィンドウ、F8のステップ実行など、
デバッグが出来るようになればすぐ分かると思いますよ。

投稿2018/04/18 00:39

ExcelVBAer

総合スコア1175

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問