エクセルのデータ表で、フォームを作って操作する(その2)フォームにデータを表示
※前回の内容は→ Part I (01)です。 です。前回終了時点のサンプルファイルはここにあります→ 右クリックでここからダウンロードできます(ファイル名sample01.xlms)
今回は、シート上のボタンをクリックすると、5行目のデータが表示されるようにします。
(2-1):シート上に、フォームを表示するボタンを作る。 ----------
Visual Basic Editorの画面を使わずに、シート上にボタンを作って、クリックするとフォームを表示するようにします。この部分の操作は、通常のExcelシートで行います。
【2-1-1】シートの上にボタンを作る
Excelのデータシートを表示しておいてください。ボタンの作り方はいろいろありますが、ここでは、好きな図形を作ってボタンにすることにしました。1) データの上に、2行挿入します。(1行はボタン用。もう1行は説明用)
2) [挿入]-[シェイプ]で、好きな図形を選んで好きなサイズにします。
3)ボタンにテキストを追加するなど、見た目をわかりやすくします。(プログラムではなくビジュアルの話なので、ここでは簡単に)
・テキストの追加…ボタンを右クリックして、[テキストの編集]
・文字の調整…ボタンを右クリックして[サイズとプロパティ]-[テキストボックス]
・文字色など…ボタンを右クリックして[スタイル]
【2-1-2】ボタンに、作ったプログラム(プロシージャ)を登録する
1) ボタンを右クリックして、表示されるメニューから「マクロを登録」2) マクロ(プロシージャ)の登録画面が出るので、前回作った「edit_data」をクリックして[OK]
※ 結果、ボタンの上のマウスカーソルが指に代わり、クリックすると、フォームが表示されるようになります。
※ 後ほど、[閉じる] ボタンを作ります。今はフォーム右上のボタンで閉じてください。
(2-2):フォームに、データ内容を表示する ----------
ここから、またVisjual Basic Editorに戻ります。【2-2-1】 ユーザーフォーム(UserForm1) にコードを書きます
※ 前回は、標準モジュールのModule1に書きました。
今回は、フォームのUserForm1に書きます。1) UserForm1のコードエディタを表示する
3つ操作を書きますが、どの方法でも構いません。
操作その1)プロジェクトエクスプローラのUserForm1を選択して、[表示]-[コード]
操作その2)プロジェクトエクスプローラのUserForm1を選択して、F7を押す
操作その3)プロジェクトエクスプローラのUserForm1で右クリックして、「コードの表示」
コードエディタが表示されます。何かプロシージャが書かれていたら、削除してください。空の状態で始めます。
2) フォームを立ち上げた時に動かす、特殊なプロシージャを書きます。VBAで決まっている書き方です。
UserForm_Initialize。日本語でいうと 「ユーザーフォームの、最初の設定をする」 です。
Private Sub UserForm_Initialize()
End Sub
※ 説明・ユーザーフォーム … UserForm (これは、ユーザーフォームの名前UserForm1ではなく、フォーム自体のことです。)
・最初の設定をする=初期化する … Initialize
・フォームに固有のプロシージャなので … Private Sub
※ 補足) 手入力せずに書く方法
1. [オブジェクト]を 一番下のUserForm にします。
2. Private Sub UserForm_Click() とEnd Sub が表示されますが、そのままにしておきます。
3. [プロシージャ] を Initialize にします。
4. Private Sub UserForm_Initialize() と End Sub が表示されます。
2で表示された2行は不要なので、削除してください。
※これで、データ表示のプログラムを書く準備ができました。
3) 5行目のデータを、フォームに表示する
書きたい日本語は、
「TextBox1」の値に、ワークシート「Sheet1」のセル5行1列の値を入れる
このまま、コード (プログラム)にします。
TextBox1.Value = Worksheets("Sheet1").Cells(5, 1).value
※ この「=」は、「 1 + 2 = 3 」の場合の「等しい」という意味ではありません。TextBox1 … テキストボックスの名前です。(自動でつくのでそのまま使いました)
「 a = 5 (aに5を代入する)」の場合と同じで、「代入」する、という意味です。
Value … 値
ワークシート「Sheet1」 … Worksheets("Sheet1") ※WorksheetではなくWorksheets
セル5行1列 … Cells(5, 1) ※CellではなくCells
順に、「 . 」(ドット)でつなぎます。
Private Sub UserForm_Initialize()
TextBox1.Value = Worksheets("Sheet1").Cells(5, 1).Value
End Sub
※ コードが入力できたら、シートのボタンをクリックしてフォームを立ち上げてください。
※ 5行1列のデータが「No」のテキストボックスに表示されています。
残り、5個のテキストボックスも表示させましょう。
Private Sub UserForm_Initialize()
TextBox1.Value = Worksheets("Sheet1").Cells(5, 1).Value
TextBox2.Value = Worksheets("Sheet1").Cells(5, 2).Value
TextBox3.Value = Worksheets("Sheet1").Cells(5, 3).Value
TextBox4.Value = Worksheets("Sheet1").Cells(5, 4).Value
TextBox5.Value = Worksheets("Sheet1").Cells(5, 5).Value
TextBox6.Value = Worksheets("Sheet1").Cells(5, 6).Value
End Sub
※ このコードは、同じパターンが綺麗に並んでます(変わっているのは、1~6の数字だけ)。PartIで一通り完成させた後、PartIIでこの部分をかきかる予定です。※結果は 以下のようになります。
※ 続きはまた今度。「[閉じる]ボタンを作る」と「クリックした行を表示させる」の予定です。
※ ここまでのデータは、こちらからダウンロードできます。(リンクを右クリックして保存)
続きはエクセルにフォームをつける Part I(03)
0 件のコメント:
コメントを投稿