思考酒後

思考酒後

自分に入ってきた情報を定着、深化するために文章化

MENU

【Excelマクロ】ユーザーフォームの使い方を理解したから、分かりやすく解説するよ!

こんばんは、masa@ masa)です!

ユーザーフォームの使い方がようやく分かってきたので分かりやすく解説してみようと思います。使えるようになると繰返し入力をする機会が消滅します。やばいです。

 

f:id:masa_mn:20170317211651j:plain

そもそもユーザーフォームって何?

これです。大きさ、位置、機能を自由自在に配置、設定できる使いこなせれば魔法のようなツールです。

▼ユーザーフォームの例

f:id:masa_mn:20170317191813j:plain

 

ユーザーフォームで何ができるの?

下にあるユーザーフォームに数字・文字を入力して登録ボタンを押すと、指定したすべてのセルに「日付」を一括かつ一瞬で入力することができるのです!(すごい!便利!)

同じ動作が大量にあればあるほど自動化による効果も大きくなっていきます。

f:id:masa_mn:20170317192210j:plain

僕は50枚(100箇所)の請求書を作成しましたが、そのときの日付の入力をこのユーザーフォームで修正しました。

ユーザーフォームを駆使できるようになると効率の高さにめちゃめちゃ感激します!

 

ユーザーフォームの作り方

まずはAlt+F11でエディタを起動させます。

右クリックでユーザーフォームを挿入しましょう。

f:id:masa_mn:20170317193222j:plain

 

▼とりあえず「機能のない」ユーザーフォームができました。

f:id:masa_mn:20170317193339j:plain

 

ツールボックスで機能を追加

とりあえず、なんか機能を追加しましょう!

 

▼テキストボックスを追加

f:id:masa_mn:20170317193548j:plain

▼コマンドボタンを追加

f:id:masa_mn:20170317193700j:plain

▼ラベルを追加

f:id:masa_mn:20170317193905j:plain

 

とまぁ、こんな感じで好きなやつを設置しましょう。

 

位置・形の調整

マウスでいじってこんな感じに。

f:id:masa_mn:20170317194141j:plain

 

大きさ・色の変更

登録ボタンの色、「様」の大きさを変更してみましょう。

登録ボタンを選択して、プロパティを選択しましょう。

 

▼BackColorでクリーム色にしてみました。

f:id:masa_mn:20170317194540j:plain

 

▼Fontで「様」を12ptにしてみました。

f:id:masa_mn:20170317194711j:plain

 

名前の設定

オブジェクト名が「コードを書くときの対象」、Captionが「表示される名前」となります。オブジェクト名はきちんと覚えておきましょう。

 

▼ユーザーフォーム自体の名前をname_outputと定義しました。

f:id:masa_mn:20170317202142j:plain

 

▼テキストボックス自体の名前をtext1と定義しました。

f:id:masa_mn:20170317195325j:plain

 

▼コマンドボタンをButton1と定義しました。

f:id:masa_mn:20170317195510j:plain

 

マクロとボタンの紐付け

この辺から少しだけ複雑になりますが、焦らずに進めていきましょう!

ここで「登録」ボタンを左クリックを連打してみてください。

 

すると、こんな画面になると思います。

f:id:masa_mn:20170317195836j:plain

これは、「登録」ボタンを押すと「Button1_Click」というマクロが実行するということを意味しています。

これは大事です。マクロの実行のトリガーがこのボタンになっているのです。

 

▼元の画面に戻るには左クリックを連打して下さい。

f:id:masa_mn:20170317200207j:plain

 

▼練習用にこんなものを用意しました。

f:id:masa_mn:20170317200428j:plain

 

▼こんなコードを書いてみましょう。

Private Sub Button1_Click()

Range("b3").Value = "佐藤"
Range("b5").Value = "佐藤"
Range("b7").Value = "佐藤"
Range("b9").Value = "佐藤"
Range("b11").Value = "佐藤"

End Sub

 

これでボタンを押しさえすれば、それぞれのセルに「佐藤」と入力されるように設定できました。

ボタンはどうやって画面上に表示させるのか?

これですね。エディター上ではなく、Excelの画面になければボタンの押すすべがありませんよね。方法は二つあります。

 

方法①常駐させる。

エディターで「ThisWorkbook」を選択し、以下のコードを書いてください。

f:id:masa_mn:20170317202358j:plain

 

 Private Sub Workbook_Open()
 name_output.Show (vbModeless)
 End Sub

 

これは「ファイルを開いたら勝手に起動する。」というコードです。

ちなみに一度ユーザーフォームを閉じてしまうと再起動はできないのでご注意ください。

試しに一度ファイルを閉じて起動してみましょう!

▼おお、出てきた!

f:id:masa_mn:20170317203407j:plain

▼ボタンを押してみた、入力された!

f:id:masa_mn:20170317203547j:plain

とまぁこんな感じです。

続きに戻ります。

方法②マクロを使って起動する。

マクロを使って起動します。標準モジュールに以下のコードを書いて下さい。

Sub nameoutput()
name_output.Show
End Sub

 

これだけでは使い勝手が悪いので図形に埋め込みましょう。

▼図形を選択して、右クリックでマクロを登録しましょう。

f:id:masa_mn:20170317204029j:plain

f:id:masa_mn:20170317203953j:plain

f:id:masa_mn:20170317210704j:plain

 

▼できました!

f:id:masa_mn:20170317204138j:plain

図形に登録しておいた方が使い勝手がいいですね。

 

マクロとテキストボックスの紐付け

ここまでで「佐藤」と入力したい場合の方法を解説してきました。

ここからはテキストボックスを使って「任意入力」する方法を解説していきます。

「Button1」クリック時のマクロを以下に変更してください。

 

Private Sub Button1_Click()

Range("b3").Value = text1.Value
Range("b5").Value = text1.Value
Range("b7").Value = text1.Value

Range("b9").Value = text1.Value
Range("b11").Value = text1.Value

End Sub

 

text1」とは先ほど設定したテキストボックスのことです。

このコードにより「マクロとテキストボックスの紐付け」が完了です。

 

試しに閉じて機能を確認しましょう。

鈴木と入力し、ボタンを押してみると…。

 

▼おお、できた!

f:id:masa_mn:20170317204840j:plain

とまぁこんな感じです。

意外と難しくなかったんじゃないでしょうか??

これを応用していけばあなたもユーザーフォーマーになれるでしょう!

 

補足

  • ボタンを押した後に終了したいときは以下のコードをEnd subの前に追加してください。

 Unload name_output

 

  • テキストボックスの文字を入力後に消したい場合は以下のコードをUnload name_outputの前に追加してください。

text1.Value = ""

 

  • もう少しスマートなコードはこちらから

Private Sub Button1_Click()
Dim i As Variant
For i = 1 To 5
Cells(2 * i + 1, 2).Value = text1.Value

'(Cells(縦,横)という座標を与えることができます。)
Next i

text1.Value = ""
Unload name_output

End Sub

 

  • もっとスマートなコードはこちらから

Private Sub Button1_Click()
x = InputBox("入力個数の決定")

Dim i As Variant
For i = 1 To x
Cells(2 * i + 1, 2).Value = text1.Value
Next i

text1.Value = ""
Unload name_output

End Sub

試しにこんなことを…

 

f:id:masa_mn:20170317210200j:plain

溢れんばかりの斉藤さんが…。

f:id:masa_mn:20170317210257j:plain

 

おわりに

ユーザーフォームの使い方、分かっていただけたでしょうか?その他の機能もありますが、とりあえず使えるようになるための最低限の解説としました。

駆使できるようになると繰返し入力が鬼速になるので最 高です。

 

▼宅ファイル便でアップロードしています。期限が短いですが、良かったらどうぞ。

https://free.filesend.to/filedn_infoindex?rp=1af4bd5c5653a2bcdb4392969633646o

こんな記事も書いています。

masa-mn.hatenablog.com

 

masa-mn.hatenablog.com

 

masa-mn.hatenablog.com

広告を非表示にする