エクセルのデータ表で、フォームを作って操作する(その4) フォームに入力したデータを、セルに書き込む・他
※前回の内容は→ Part I (03)です。 です。前回終了時点のサンプルファイルはここにあります→ 右クリックでここからダウンロードできます(ファイル名sample03.xlms)
前回は、編集・入力したい行をクリックしてフォームに表示できるようにしました。またフォームに[閉じる]ボタンを作成して、クリックするとフォームが閉じるように作りました。
今回は、[セルに書き込む]ボタンをフォームに作成し、クリックで、入力したデータをセルに書き込めるようにします。また、フォーム上のオブジェクトを揃えたり、使いやすくします。
(4-1)フォームに「セルに書き込む」ボタンを作る ----------
前回の[閉じる]ボタンでは、VBAが自動でつけた名前(オブジェクト名CommandButton1)をそのまま使いました。
今回は、ボタンの名前(オブジェクト名)を自分で決めることにします。
【4-1-1】フォーム上に[セルに書き込む]ボタンを作る
※Visual Basic Editorで操作します。Visual Basic Editor が閉じている場合は、Excelシートの開発タブをクリックして、左端のVisualBasicをクリックして、立ち上げてください。
1)フォームを編集する準備
※ 画面左のプロジェクトエクスプローラを使って、フォームを表示します。
プロジェクトエクスプローラが表示されていない時は、[表示]-[プロジェクトエクスプローラ]をクリックして画面に出してください。
editDataForm(前回つけたフォームの名前)をダブルクリックして、フォームを表示します
2) ツールボックスを使って、フォーム上に、コマンドボタンを書きます。
3) 左のプロパティウィンドウを使って、ボタンの名前とキャプションを設定します。
・ ボタンのキャプション…「書き込む」にしました。
・ ボタンの名前 … 「CommandButton_Write」にしました。
【4-1-2】フォームに、コードを書く
1) 「CommandButton_writeボタンを クリック」 したときの処理を、記述します。準備として subで始まる枠を書いておきます。
Private Sub CommandButton_write_Click()
End Sub
※ 前回、コードを書く画面は、プロジェクトエクスプローラでeditDataFormを選択→右クリック→「コードを表示」で出しました。( Part I(02) の【2-2-1】 に、他の操作方も書いてあります)今回は、別の方法を使います。
ボタンの上で右クリック → 「コードの表示」
一気に、上述の「~ 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」にします。
2) 揃えたい
ボックスのサイズを、揃えたい … オブジェクトを複数選択して width(幅) height(高さ)に値を入れる
左端を揃えたい … オブジェクトを複数選択して、left に値を入れる
横に綺麗に並べたい … オブジェクトを複数選択して、top に値を入れる
3) すぐ日本語入力ができるようにする(切り替えなくてもよい)
設定したいオブジェクトを選択して、IMEMode を「1 - fmIMEModeOn」にします。
※ プロパティウィンドウには「全体」タブと「項目別タブ」があります。
「全体」タブ は アルファベット順、「項目別タブ」は カテゴリー分け。どちらも内容は同じですので、使いやすい方で、設定してください。
これで、Part I は終わりです。シンプルですが、使えるフォームができました。
プログラムは 「しゃべることば」を、そのまま「コードに置き換えることからはじまる」という感じが伝わっていると、嬉しいです。
Part II では、[次へ]ボタンや、[前へ]ボタンを作って、さらに使いやすくします。また、 Part I(02) で予告したように、同じパターンが綺麗に並んでいるときの書き方など、プログラムをわかりやすく変えていこうと思います。
※ 続きはまた今度。Part II 「次へ・前へ」ボタン他、の予定です。
※ ここまでのデータは、こちらからダウンロードできます。(リンクを右クリックして保存)
続きはエクセルにフォームをつける Part II (01) [次行][前行]をつける、変数を使う
0 件のコメント:
コメントを投稿