8-フォームって便利!(エクセルマクロ)
セルのダブルクリックで全行確認
皆さんこんにちは。
本日は[6-ダブルクリックで全項目確認!]と[7-セルのダブルクリックでマクロ実行]でご紹介した一連の流れを踏まえて、次の図のようにA列のダブルクリックでその行の情報を一目で確認できるフォーム作りのまとめです。
★上の図のシート名は「記録」とします。
↓↓動画でも確認できます。
①テキストボックスを配置します。
(6-ダブルクリックで全項目確認!の手順1)
②ラベル(項目名)を配置します。
③フォームが表示された時の初期値を設定します。
(6-ダブルクリックで全項目確認!の手順2)
・フォームのデザイン画面の何もないところでダブルクリックしてコード画面に切り替えます。
・左上の選択ボックスで「UserForm」を選択
・右上の選択ボックスで「Initialize」を選択
Private Sub UserForm_Initialize() ←このコードが表示されます。
(ここでコードを初期値の値を指定します。)
End Sub
<サンプルコード>
(フォームに配置した全てのテキストボックスにセルの参照場所を割り当てています。)
TextBox1.Value = Range("A" & ActiveCell.Row).Value
TextBox2.Value = Range("B" & ActiveCell.Row).Value
TextBox3.Value = Range("C" & ActiveCell.Row).Value
TextBox4.Value = Range("D" & ActiveCell.Row).Value
TextBox5.Value = Range("E" & ActiveCell.Row).Value
TextBox6.Value = Range("F" & ActiveCell.Row).Value
★左辺のテキストボックスの名前(TextBox1~TextBox6)は次の図のようにテキストボックスをクリックすると左のプロパティ画面の(オブジェクト名)というところに表示されます。
販売品のテキストボックスが「TextBox3」ということが分かりました。エクセルシートで販売品の項目の列を確認すると(冒頭の図です)C列ですので、次のようなコードになります。
TextBox3.Value = Range("C" & ActiveCell.Row).Value
「Activecell」とはこのフォームが開く前にエクセルシート上でダブルクリックした場所のセルのことです。(6-ダブルクリックで全項目確認!の手順2の解説)
↓このようになります。
④「登録」ボタン、「閉じる」ボタンの作成
★コマンドボタン作成部分は初めてのご紹介になります。
手順1)コマンドボタンの配置
左側プロジェクト画面の「フォーム」→「UserForm1」(赤枠)をダブルクリックしてフォームのデザイン画面を開いたら、ツールボックスが開いていない場合は「表示」→「ツールボックス」でツールボックスを表示させます。
ツールボックスの「CommandButton」(緑の丸)をクリックしてコマンドボタンを配置します。
手順2)コマンドボタンにボタンの名前を表示する
コマンドボタンを配置したらボタンに表示する名前を変えます。
配置したコマンドボタンをクリックして左のプロパティ画面に「Caption」という項目がありますのでここに「登録」と入力します。
「閉じる」ボタンも同じように作ります。
手順3)「登録」ボタンにコードを登録する
「登録」ボタンをダブルクリックしてコード画面を開きます。
開くとすぐに「Private Sub オブジェクト名_Click()」と表示されますので、その下の「End sub」の間にコードを書いていきます。
今度はテキストボックスで書いた値をエクセルシートに登録するわけですから、
「セルの値=テキストボックスの値」というコードの書き方になります。
★③で初期値を設定するコードを書きましたが、それと全く逆に書けばいいのです。
◆解説
最後のコード「Unload UserForm1」(黄色部分)は
フォームを閉じるときの書き方です。「Unload オブジェクト名」です。
手順4)「閉じる」ボタンにコードを登録する
手順1)のように、左側プロジェクト画面の「フォーム」→「UserForm1」をダブルクリックしてフォームのデザイン画面を開いたら、「閉じる」ボタンをダブルクリックしてコード画面を開きます。
先ほどご紹介したフォームを閉じるコードを書きます。
⑤A列のダブルクリックでフォームが開くように設定する
これにつきましては「7-セルのダブルクリックでマクロ実行」でご紹介したのが全てです。
左側プロジェクト画面で設定したいシート名をダブルクリックしてコード画面を切り替えたら左上を「Worksheet」右上を「BeforeDoubleClick」にして
↓↓このコードの下に書いていきます。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
◆書くコード
If Target.Column = 1 Then
UserForm1.Show
End If
◆解説
ダブルクリックした列番号が「1」なら
UserForm1を開く
以上です。
今回は長かったですね。
ここまで読んでくださった皆さんの業務に役立てていただけると幸いです。
どうもありがとうございます。