VBA練習問題
VBA100本ノック 73本目:新規ブックにボタン作成しマクロ登録

VBAを100本の練習問題で鍛えます
最終更新日:2021-01-24

VBA100本ノック 73本目:新規ブックにボタン作成しマクロ登録


新規ブックの先頭シートにフォームコントロールのボタンを作成しマクロを登録する問題です。


ツイッター連動企画です。
ツイートでの見やすさを考慮して、ブック・シート指定等を適宜省略しています。

VBAテスト用のサンプルデータはご自身でご用意ください。


出題

出題ツイートへのリンク

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

マクロ VBA 100本ノック


頂いた回答

解説

マクロ記録がそのまま使えるのでVBAを書くのに困ることは無いと思います。
しかし実際に書く時にButtonsが出なくて?となった人もいるかもしれません。
Buttonsは隠しメンバーになっています。
これを表示すれば候補も出てくるようになります。

マクロ VBA 100本ノック

マクロ VBA 100本ノック

マクロ VBA 100本ノック


ここでは意図的にオブジェクト変数に入れてみました。
ボタンには相対パスで登録されるので、位置関係が崩れなければファイルを移動してもボタンは使用できます。
記事にVBAを掲載しました。補足はありません。

Sub VBA100_73_01()
  Dim wb As Workbook, ws As Worksheet, rng As Range
  Set wb = Workbooks.Add
  Set ws = wb.Worksheets(1)
  Set rng = ws.Range("B2")
  
  Dim btn As Button
  Set btn = ws.Buttons.Add(rng.Left + 10, rng.Top + 10, 80, 30)
  btn.Caption = "テスト"
  btn.OnAction = "'" & ThisWorkbook.Name & "'!test"
  
  Application.DisplayAlerts = False
  wb.SaveAs Replace(ThisWorkbook.FullName, "xlsm", "_test.xlsx")
  wb.Close
  Application.DisplayAlerts = True
End Sub


補足

補足はありません。


サイト内関連ページ

第136回.フォームコントロール
リボンの開発タブにコントロールの挿入があります。フォームコントロールをVBAで扱う場合の解説になります。ワークシートでフォームコントロールを扱う事の是非はありそうですが、使用することで便利かつ見栄えの良いシートになる場合もあります。
第137回.ActiveXコントロール
リボンの開発タブにコントロールの挿入があります。ActiveXコントロールをVBAで扱う場合の解説になります。ワークシートでActiveXコントロールを扱う事の是非はありそうですが、使用することで便利かつ見栄えの良いシートになる場合もあります。




同じテーマ「VBA100本ノック」の記事

70本目:ステータスバーに1秒ごとに時刻が表示
71本目:パワーポイントへグラフを貼り付け
72本目:ITをDXに変換(文字列操作)
73本目:新規ブックにボタン作成しマクロ登録
74本目:1シート複数表をDB形式に変換
75本目:ログインフォームの作成
76本目:ボタンの表示名の位置へ移動
77本目:シート挿入イベント
78本目:グラフのデータ範囲拡張
79本目:Wordにセル範囲を図として挿入
魔球編:組み合わせ問題


新着記事NEW ・・・新着記事一覧を見る

VBA100本ノック 79本目:Wordにセル範囲を図として挿入|VBA練習問題(2月1日)
VBA100本ノック 78本目:グラフのデータ範囲拡張|VBA練習問題(1月30日)
VBA100本ノック 77本目:シート挿入イベント|VBA練習問題(1月29日)
VBA100本ノック 76本目:ボタンの表示名の位置へ移動|VBA練習問題(1月27日)
VBA100本ノック 75本目:ログインフォームの作成|VBA練習問題(1月26日)
VBA100本ノック 74本目:1シート複数表をDB形式に変換|VBA練習問題(1月25日)
VBA100本ノック 73本目:新規ブックにボタン作成しマクロ登録|VBA練習問題(1月23日)
VBA100本ノック 72本目:ITをDXに変換(文字列操作)|VBA練習問題(1月22日)
VBA100本ノック 71本目:パワーポイントへグラフを貼り付け|VBA練習問題(1月20日)
VBA100本ノック 70本目:ステータスバーに1秒ごとに時刻が表示|VBA練習問題(1月19日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ