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ファイルにマクロって登録できないと思ってました…
なのでこの問題、めっちゃびっくりしました。
みなさん知ってました?
コードが保存できないだけで、別ブックのマクロは
実行できるんですね!
これをもっと前に知ってたら…
あんなことやこんなことできたのにな…と思てます。
また一つええこと知ってしもた。実務も頑張るディ!
コメント