2016年1月13日水曜日

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

エクセルのデータ表で、フォームを作って操作する(その4) フォームに入力したデータを、セルに書き込む・他

※前回の内容は→ Part I (03)です。 です。
前回終了時点のサンプルファイルはここにあります→ 右クリックでここからダウンロードできます(ファイル名sample03.xlms)

前回は、編集・入力したい行をクリックしてフォームに表示できるようにしました。またフォームに[閉じる]ボタンを作成して、クリックするとフォームが閉じるように作りました。
今回は、[セルに書き込む]ボタンをフォームに作成し、クリックで、入力したデータをセルに書き込めるようにします。また、フォーム上のオブジェクトを揃えたり、使いやすくします。


(4-1)フォームに「セルに書き込む」ボタンを作る ----------


前回の[閉じる]ボタンでは、VBAが自動でつけた名前(オブジェクト名CommandButton1)をそのまま使いました。
今回は、ボタンの名前(オブジェクト名)を自分で決めることにします。

【4-1-1】フォーム上に[セルに書き込む]ボタンを作る

※Visual Basic Editorで操作します。
 Visual Basic Editor が閉じている場合は、Excelシートの開発タブをクリックして、左端のVisualBasicをクリックして、立ち上げてください。
4100
1)フォームを編集する準備
※ 画面左のプロジェクトエクスプローラを使って、フォームを表示します。
 プロジェクトエクスプローラが表示されていない時は、[表示]-[プロジェクトエクスプローラ]をクリックして画面に出してください。
4100

editDataForm(前回つけたフォームの名前)をダブルクリックして、フォームを表示します
4102
2) ツールボックスを使って、フォーム上に、コマンドボタンを書きます。
4103
3) 左のプロパティウィンドウを使って、ボタンの名前とキャプションを設定します。
 ・ ボタンのキャプション…「書き込む」にしました。
 ・ ボタンの名前 … 「CommandButton_Write」にしました。
4104

【4-1-2】フォームに、コードを書く

1) 「CommandButton_writeボタンを クリック」 したときの処理を、記述します。準備として subで始まる枠を書いておきます。

Private Sub CommandButton_write_Click()

End Sub
※ 前回、コードを書く画面は、プロジェクトエクスプローラでeditDataFormを選択→右クリック→「コードを表示」で出しました。( Part I(02) の【2-2-1】 に、他の操作方も書いてあります)
今回は、別の方法を使います。
ボタンの上で右クリック → 「コードの表示」
4105
一気に、上述の「~ CommandButton_write_Click() ~」のコードが入ります。

2) 「フォームのデータを、セルに入れる」 コードを書きます。
例) ワークシート「Sheet1」のセル5行1列(の値)に、TextBox1の値を入れる
 Worksheets("Sheet1").Cells(5, 1).Value = TextBox1.Value
となります。
クリックした行に書き込みたいので、5 の代わりに ActiveCell.Row と書きます。
 Worksheets("Sheet1").Cells(ActiveCell.Row, 1).Value = TextBox1.Value

Private Sub CommandButton_write_Click()

    Worksheets("Sheet1").Cells(ActiveCell.Row, 1).Value = TextBox1.Value
    Worksheets("Sheet1").Cells(ActiveCell.Row, 2).Value = TextBox2.Value
    Worksheets("Sheet1").Cells(ActiveCell.Row, 3).Value = TextBox3.Value
    Worksheets("Sheet1").Cells(ActiveCell.Row, 4).Value = TextBox4.Value
    Worksheets("Sheet1").Cells(ActiveCell.Row, 5).Value = TextBox5.Value
    Worksheets("Sheet1").Cells(ActiveCell.Row, 6).Value = TextBox6.Value

End Sub
※ 「クリックした行をカード型で表示、編集・入力できるフォーム」が作成できました。


(4-2)フォームの見え方を編集します(プロパティウィンドウを使う) ----------

フォーム上のオブジェクト(テキストボックス、ラベル、コマンドボタンなど)の編集は、プロパティウィンドウを使って行います。
プロパティは、見え方や、表示のしかた、日本語変換を使うかどうかなど、細かな設定ができます。編集したいオブジェクトを選択して、値を設定します。オブジェクトは、Ctrl を押しながらクリックすると、複数選択できるので、一度に設定できます。
いくつか紹介します。

1) データの内容が、テキストボックスの横幅に収まらない。複数行表示させたい。
 → 変えたいオブジェクトを選択して、MultiLine を「True」にします。
4201

2) 揃えたい
 ボックスのサイズを、揃えたい … オブジェクトを複数選択して width(幅) height(高さ)に値を入れる
 左端を揃えたい … オブジェクトを複数選択して、left に値を入れる
 横に綺麗に並べたい … オブジェクトを複数選択して、top に値を入れる
4202
3) すぐ日本語入力ができるようにする(切り替えなくてもよい)
 設定したいオブジェクトを選択して、IMEMode を「1 - fmIMEModeOn」にします。
4203
※ プロパティウィンドウには「全体」タブと「項目別タブ」があります。
「全体」タブ は アルファベット順、「項目別タブ」は カテゴリー分け。どちらも内容は同じですので、使いやすい方で、設定してください。

これで、Part I は終わりです。シンプルですが、使えるフォームができました。
4204
プログラムは 「しゃべることば」を、そのまま「コードに置き換えることからはじまる」という感じが伝わっていると、嬉しいです。 

Part II では、[次へ]ボタンや、[前へ]ボタンを作って、さらに使いやすくします。また、 Part I(02) で予告したように、同じパターンが綺麗に並んでいるときの書き方など、プログラムをわかりやすく変えていこうと思います。

※ 続きはまた今度。Part II 「次へ・前へ」ボタン他、の予定です。
※ ここまでのデータは、こちらからダウンロードできます。(リンクを右クリックして保存)
続きはエクセルにフォームをつける Part II (01) [次行][前行]をつける、変数を使う



0 件のコメント:

コメントを投稿

gmailの 赤い文字の「提案」を消す

【問題】 gmail。要件はとっくに片付いているのに、いつまでも提案がでる。こんな提案は全く不要。 【消す方法】 1)[設定]の[全般]で、「アクションの提案」を探す。 2)その「返信するメールを提案」のチェックをはずす。 ついでに「フォローアップするメー...