エクセルのデータ表で、フォームを作って操作する(その3) フォームに、クリックした行を表示。閉じるボタンを作る
※前回の内容は→ Part I (02)です。 です。前回終了時点のサンプルファイルはここにあります→ 右クリックでここからダウンロードできます(ファイル名sample02.xlms)
前回(その2)では、5行目のデータを表示しました。
今回は、自由に、クリックした行をフォームで表示します。また、フォームに[閉じる] ボタンを作ります。
(3-1)テキストボックスに「クリックした行のデータ」を、表示させます。 ----------
使用するコード・クリックしたセル … ActiveCell
・行 … row
・「クリックした行」 … ActiveCell.Row
Private Sub UserForm_Initialize()
TextBox1.Value = Worksheets("Sheet1").Cells(ActiveCell.Row, 1).Value
TextBox2.Value = Worksheets("Sheet1").Cells(ActiveCell.Row, 2).Value
TextBox3.Value = Worksheets("Sheet1").Cells(ActiveCell.Row, 3).Value
TextBox4.Value = Worksheets("Sheet1").Cells(ActiveCell.Row, 4).Value
TextBox5.Value = Worksheets("Sheet1").Cells(ActiveCell.Row, 5).Value
TextBox6.Value = Worksheets("Sheet1").Cells(ActiveCell.Row, 6).Value
End Sub
前回の、TextBox1.Value = Worksheets("Sheet1").Cells(5, 1).Value を書き換えてます。「5」を「ActiveCell.Row」にします。TextBox1.Value = Worksheets("Sheet1").Cells(ActiveCell.Row, 1).Value
※ 表示したいセルをクリック→[データ編集]ボタンをクリックして、確認してください。
(3-2)フォームに[閉じる]ボタンをつけて、クリックで閉じるようにする。 ----------
ユーザーフォームを表示して、コマンドボタンをつけます。【3-2-1】 ツールボックスを準備します。
出ていなければ、(その1)アイコンをクリックするか、(その2)[表示]-[ツールボックス]、いずれかで表示させてください。【3-2-2】コマンドボタンを作り、プロパティのcaptionを「閉じる」に変えます。
1) コマンドボタンを作ります2) Captionを 「閉じる」に変更します。
左のプロパティで、(オブジェクト名)がCommandButton1 であるのを確認して、「閉じる」に変更します。
※ [閉じる]ボタンはできました。クリックしても、まだ何も起こりません。
【3-2-3】「閉じる をクリックすると フォームを消す」 コードを書きます
1) 「 [閉じる] ボタンをクリックする」 、と書きます。使用するコード
・[閉じる] ボタンの名前 … CommandButton1
・クリックする … Click
→ 閉じるボタン(CommandButton1) をクリックする … CommandButton1_Click
Private Sub CommandButton1_Click()
End Sub
※ 参考) 手入力せずに、書く方法オブジェクトと、プロシージャを選びます。
※ 説明
ボタンやボックスを、オブジェクトといいます。
オブジェクト名 … プログラムで使う名前。ロボット用。自由につけることができますが、文字は必ず半角英数字で書きます。
caption … 画面に表示する文字。人間用。日本語でも可。自由に書きます。
2) 使っているフォームに名前(オブジェクト名)とCaptionをつけます。
1.準備: 左のプロパティウィンドウで操作します。出ていない場合は、[表示]-[プロパティウィンドウ]で出してください。下に潰れているときはサイズ変更で見やすくします。
2. フォームの名前(オブジェクト名)を、「UserForm1」 から「editDataForm」 に
caption を、「UserForm1」 から「入力・編集画面」 に、変更します。
※ 「UserForm1」は自動的につく名前です。ここで、自分流に editDataForm と変えました。
※オブジェクト名とキャプションの変更によって、画面表示が変わります。
3. フォーム名の変更に合わせて、フォームを表示するコードを変更します。
※実験) 変更する前に、シートで[データ編集]ボタンをクリックしフォームを表示してみてください。エラーメッセージが出ます。
※名前(オブジェクト名)が変わったので、プログラム実行ロボットが探しだすことができず、エラーメッセージを返してきます。[終了]を押して閉じてください。
コードを変更します。標準モジュールのModule1をクリックしてコードを出してください。
元は 「UserForm1を表示してください」 でした。
Sub edit_data()
UserForm1.Show
End Sub
→ 変更後は 「editDataFormを表示して」 と書きます。
Sub edit_data()
editDataForm.Show
End Sub
3) 「フォームを消す」コードを書く
使用するコード
・消すフォームの名前 …
editDataForm
・消す … Unload
→ フォーム(
editDataForm
) を消す … Unload editDataForm
※間はスペースで区切ります
Private Sub CommandButton1_Click()
Unload editDataForm
End Sub
※ これで、フォームの[閉じる] は完成です。※ 続きはまた今度。「フォームに入力した内容を、セルに書き込む」の予定です。
※ ここまでのデータは、こちらからダウンロードできます。(リンクを右クリックして保存)
続きはエクセルにフォームをつける Part I(04)
0 件のコメント:
コメントを投稿