2016年1月12日火曜日

エクセルにフォームをつける Part I (03)

エクセルのデータ表で、フォームを作って操作する(その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)[表示]-[ツールボックス]、いずれかで表示させてください。
3202

【3-2-2】コマンドボタンを作り、プロパティのcaptionを「閉じる」に変えます。

1) コマンドボタンを作ります
3202
2) Captionを 「閉じる」に変更します。
左のプロパティで、(オブジェクト名)がCommandButton1 であるのを確認して、「閉じる」に変更します。
3202
3204
※ [閉じる]ボタンはできました。クリックしても、まだ何も起こりません。
3204

【3-2-3】「閉じる をクリックすると フォームを消す」 コードを書きます

1) 「 [閉じる] ボタンをクリックする」 、と書きます。
使用するコード
 ・[閉じる] ボタンの名前 … CommandButton1
 ・クリックする … Click
 → 閉じるボタン(CommandButton1) をクリックする … CommandButton1_Click

Private Sub CommandButton1_Click()

End Sub
※ 参考) 手入力せずに、書く方法
 オブジェクトと、プロシージャを選びます。
3301
※ 説明
ボタンやボックスを、オブジェクトといいます。
オブジェクト名 … プログラムで使う名前。ロボット用。自由につけることができますが、文字は必ず半角英数字で書きます。
caption … 画面に表示する文字。人間用。日本語でも可。自由に書きます。

3302

2) 使っているフォームに名前(オブジェクト名)とCaptionをつけます。
1.準備: 左のプロパティウィンドウで操作します。出ていない場合は、[表示]-[プロパティウィンドウ]で出してください。下に潰れているときはサイズ変更で見やすくします。
3303
3303_2

2. フォームの名前(オブジェクト名)を、「UserForm1」 から「editDataForm」 に
caption を、「UserForm1」 から「入力・編集画面」 に、変更します。
※ 「UserForm1」は自動的につく名前です。ここで、自分流に editDataForm と変えました。
3304
※オブジェクト名とキャプションの変更によって、画面表示が変わります。
3305

3. フォーム名の変更に合わせて、フォームを表示するコードを変更します。
※実験) 変更する前に、シートで[データ編集]ボタンをクリックしフォームを表示してみてください。エラーメッセージが出ます。
3306
※名前(オブジェクト名)が変わったので、プログラム実行ロボットが探しだすことができず、エラーメッセージを返してきます。[終了]を押して閉じてください。

コードを変更します。標準モジュールの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 件のコメント:

コメントを投稿

BloomというAI

オープンソースのAI「BLOOM」が出ました。 日本語も使えるというので、早速サンプルページで遊びました。 白い文字が私。ピンクの文字がAI。 ↑AIとやりとり できたのが、これ。AIとの合作超短編童話😆 『 傘をさして公園を歩いていたら、小さなリスが足...