6-ダブルクリックで全項目確認!(エクセルマクロ)
エクセルシートで横に並んだ項目をスクロールせず、コンパクトにフォームで確認・修正・更新する方法
皆さんこんにちは。
エクセルシートで管理している横に並んだ項目を、縦に見て確認したいときありませんか?フォーム上に好きなように項目を並べて一行のデータを見やすく表示できるようにしておきましょう!
◆目標
セルをダブルクリックするとその行の内容がフォームで開く。
そのフォーム上で修正・更新できる。
◆フォームを作る準備
1)[開発]→[Visual Basic]で「VBE画面」を開く
2)[挿入]→[ユーザーフォーム]で「UserForm1」と「ツールボックス」を開く
★「ツールボックス」が開かれない場合は、VBE画面で [表示]→[ツールボックス]で開けます。
★VBE画面左側に「プロジェクト」「プロパティ」画面が非表示になっている場合は [表示]→[プロジェクトエクスプローラー]及び「プロパティウィンドウ」で開けます。
◆フォームを作る
上記2)の2つ目の画像のように4画面揃ったら始めていきます!
手順1)フォームにテキストボックスを設置する
①[ツールボックス]のTextBoxをクリックして
②[UserForm1]の中でクリックするとテキストボックスができます。
③プロパティ画面の(オブジェクト名)のところに「TextBox1」と表示されているのを確認してください。
(ここは自分の好きな名前に変えられますが、わかりやすいようにこのまま進めていきます。)
★この「TextBox1」という名前はコードを書くときにつかいます。
手順2)テキストボックスにセルの値を表示させる
UserForm1の中のテキストボックス以外の場所(何もないスペースのところ)でダブルクリックすると以下のような画面が出てきますので、
①右上の「Click」とある枠の選択ボタンで「Initialize」を選択すると
②のコードが表示されます。
↓↓
★「UserForm_Initialize」はフォームを開くときの初期値を設定できるところです。そこに以下のコードを書きます。
TextBox1.Value = Range("A" & ActiveCell.Row).Value
◆解説
TextBox1.Value=
「TextBox1の値は」と読みます。手順1)の図③に書かれている(オブジェクト名)です。
ActiveCell.Row
アクティブになっているセルの行番号を取得します。
A列のセルをダブルクリックしたときにそのセルの行の値をフォームに表示させたいので行番号はそのときアクティブになっているセルを参照します。
Ex.)A列の1行目でダブルクリックをした場合
Range("A" & ActiveCell.Row).Value ➡ Range("A1").Value
となりますので、コード全体の意味は
TextBox1.Value = Range("A1").Value
↓↓
TextBox1の値はセルA1の値
となり、フォームのTextBox1にセルA1の値が入るのです。
今回は新たに操作する場所が出てきたり覚えることがたくさんありますので、ここで終了です。
まずはここまでを作っておいてください。
次回はエクセルシート上でダブルクリックしたらフォームを開くように設定していきます。
お楽しみに!
↓↓動画でも確認!