73本目 新規ブックにマクロのボタンを設定

VBA100本ノック

VBA100本ノック 73本目を動画で解説しています。Excelの神髄さんの模範解答はコチラ


問題

#VBA100本ノック73本目
新規ブックを作成し、先頭シートにフォームコントロールのボタンを作成します。
・Captionは「テスト」
・登録するマクロはThisWorkbookのプロシージャー「test」
・位置および大きさは任意
新規ブックはThisWorkbookと同一フォルダにxlsxで保存。

解答

Sub 新規ブックを開いてボタンを登録()

    Dim wb As Workbook
    Set wb = Workbooks.Add '新規ブック作成
    
    Dim mcr_name As String
    mcr_name = ThisWorkbook.Name & "!test" '登録するマクロ
    
    With wb.Sheets(1).Buttons.Add(63, 18, 168.6, 64.8) 'ボタン作成
        .OnAction = mcr_name     'マクロ登録
        .Characters.Text = "テスト"  'テキスト変更
    End With
    
    Application.DisplayAlerts = False
    wb.SaveAs ThisWorkbook.Path & "\テスト.xlsx"
    wb.Close
    
End Sub

■考え方・流れ
0:00 冒頭・問題確認
1:39 マクロを登録したボタンを挿入する(手動)
3:28 (そもそも)xlsxファイルにマクロって登録できたの?
4:55 記録されたコードを確認
6:32 記録されたコードを修正
9:07 記録されたコードを修正(仕上げ)

新人君
新人君

ほぼほぼマクロの記録だけで
終わりですね!

ブチョ
ブチョ

楽しやがって…

新人君
新人君

いいことですからね…

マクロを登録したボタンを挿入する(手動)

さて!じゃあまずは…
マクロの記録を使って、コードを記録でしみよう!!
マクロを登録したボタンを挿入するコードなんて…わからないもんね!

あ…そのまえに…
何か一つ、マクロを作っておきます

開発→挿入 より、マクロを登録したボタンを挿入可能!

最後!テキストも変更して、記録終了!

記録されたコードを確認、修正

よし!そしたらお次!
記録されたコードを確認するよ!!
こんな風に…ドドドっとながーいコードが記録されるんだけど…

必要なのはこの4行ぐらいかな!
操作した順番に、上から順に記録されるから、分かりやすいね!

そしたらちゃちゃっと…修正できるところは修正しよう!
ブックをwbって変数で扱って…

続いて…Activesheetのところを
wb.Sheets(1)に変更!

続いてはSelectionの部分!!
Selectionのところは、Select→Selectionではなく…
しっかりとオブジェクトを指定してあげよう!

記録されたコードを修正(仕上げ)

ヨッシャあ最後に!!
記録されたコードの仕上げに移っていくぞ!!!

まずは、実行するマクロ名のところから!!
「Book1.xlsm!test」ってなってるところ…
これだと…ブック名が変わった時に修正が大変だよね!

mcr_name(マクロネーム)とでも変数をつくって…
変更していくぞ!

OnActionの部分も変更してあげよう!

最後に…新しく作ったブックを保存するコードも書いてあげれば!

終わりです!!お疲れさまでした!

ブチョ
ブチョ

マクロの記録って最強だね!!
俺みたい!

新人君
新人君

そうっスね!

あとがたり

おはこんばんちは。uぷ主です。
73本目、新規ブックにマクロのボタンを登録する問題でした!!

ボタンの位置とか保存する名前とかは…
もっと工夫できたポイントだったかな!!
あとは…Twitterで他の人の解答見た感じ、
マクロ名とかブック名は、constにしてる人多かったかな!
皆さん流石!

はんせーい!!
次頑張ろう!!

あ、てかuぷ主はそもそも…
xlsxファイルにマクロって登録できないと思ってました…
なのでこの問題、めっちゃびっくりしました。
みなさん知ってました?
コードが保存できないだけで、別ブックのマクロは
実行できるんですね!

これをもっと前に知ってたら…
あんなことやこんなことできたのにな…と思てます。

また一つええこと知ってしもた。実務も頑張るディ!

コメント

タイトルとURLをコピーしました