フォームからリストに転記するコード

フォームからリストに転記するコード
フォームからリストに転記するコード

マクロ 32回

フォームからリストへの転記をコードに

マクロ講座31回でフォームの形状ができましたので、今度はコードを記述していきます。
(サンプルファイルは、こちらから マクロ32回サンプルデータ

TextBoxのオブジェクト名変更

ユーザーフォームのキャプションを入力してくださいに変更しました。
フォームからリストに転記するコードマクロ1
ここからは、コードで利用しやすいように、コントロールの名称を変更していきます。
TextBox1のオブジェクト名を「titile」に変更。
フォームからリストに転記するコードマクロ2
タイトルには日本語の全角文字を入力するので、IMEModeを全角ひらがなモードにします。4-fmIMEModeHiragana(IME を全角平にする。)に変更します。
デフォルトは、0-fmIMEModeNoControlで、これはIMEのモードを変更しません。
TextBox2のオブジェクト名を「no」に変更。
フォームからリストに転記するコードマクロ3
Noには数値を入力するので、IMEModeを数値用に3-fmIMEModeDisable(IME をオフにする。)に変更します。
リリースDAYの欄も数値で日付を入力しますから、IMEModeを数値用に3-fmIMEModeDisable(IME をオフにする。)に変更します。
IMEモードを設定する IMEの入力モードを設定
TextBox3のオブジェクト名を「bookday」に変更。
フォームからリストに転記するコードマクロ4
CommamandButton3のオブジェクト名を「Addtolist」に変更。
フォームからリストに転記するコードマクロ5

UseForm入力ボタンのコード

入力ボタンをダブルクリックしてコードを表示させます。
フォームからリストに転記するコードマクロ6
入力したコードは次のようになります。
Me.Hide は、メッセージボックスを表示させる時に邪魔なのでフォームを隠しています。
フォームからリストに転記するコードマクロ7
B2セルを選択して、そこからEnd(xlDown)。
End(xlDown)で下方向に最下端を探すという意味です。そしてOffset(1, 0)でその次の空白行を選択することになります。
Private Sub Addtolist_Click()
    Me.Hide
    Sheet1.Select
    Range("B2").End(xlDown).Offset(1, 0).Select
    ActiveCell.Value = title.Value
    ActiveCell.Offset(0, 1).Value = no.Value
    ActiveCell.Offset(0, 2).Value = bookday.Value
    ActiveCell.Offset(0, 2).NumberFormat = Range("D3").NumberFormat
    
    MsgBox "追加しました!"
    Me.Show
End Sub
テキストボックスのオブジェクト名を変更してあるので、コードがわかりやすくなっていますね。
フォームからリストに転記するコードマクロ8
キャンセルボタンは入力内容をキャンセルしてクリアにするために設置しました。
フォームからリストに転記するコードマクロ9
キャンセルボタンでテキストボックスの内容がまとめてクリアされます。
フォームからリストに転記するコードマクロ10

UseForm入力ボタンのコード、1行目から入力するには

1行くらいは入力して、書式等の設定をしておいた方がよいかと思いますが、1行目から入力するには、どうするか知りたい場合もあるでしょう。
Range("B2")を選択するのでなく、Range("B1")を選択した場合は、下に降りてくれません。
下のセルからデータのある上のセルに飛ぶことは可能です。よく、RowsCountを使いますが、何もそこまで下に降りずとも、 この例では、十分に遠い下のセル、絶対にデータが入ってないセルから、上に飛んでもいいですよ。
それですと、B3から入力できます。
Range("B10000").End(xlUp).Offset(1, 0).Select