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

マクロ 32回
フォームからリストへの転記をコードに
マクロ講座31回でフォームの形状ができましたので、今度はコードを記述していきます。
(サンプルファイルは、こちらから
マクロ32回サンプルデータ)
TextBoxのオブジェクト名変更
ユーザーフォームのキャプションを入力してくださいに変更しました。

ここからは、コードで利用しやすいように、コントロールの名称を変更していきます。
TextBox1のオブジェクト名を「titile」に変更。

タイトルには日本語の全角文字を入力するので、IMEModeを全角ひらがなモードにします。
4-fmIMEModeHiragana(IME を全角平にする。)に変更します。
デフォルトは、
0-fmIMEModeNoControlで、これはIMEのモードを変更しません。
TextBox2のオブジェクト名を「no」に変更。

Noには数値を入力するので、IMEModeを数値用に
3-fmIMEModeDisable(IME をオフにする。)に変更します。

リリースDAYの欄も数値で日付を入力しますから、IMEModeを数値用に
3-fmIMEModeDisable(IME をオフにする。)に変更します。

IMEモードを設定する
TextBox3のオブジェクト名を「bookday」に変更。

CommamandButton3のオブジェクト名を「Addtolist」に変更。

UseForm入力ボタンのコード
入力ボタンをダブルクリックしてコードを表示させます。

入力したコードは次のようになります。
Me.Hide は、メッセージボックスを表示させる時に邪魔なのでフォームを隠しています。

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
テキストボックスのオブジェクト名を変更してあるので、コードがわかりやすくなっていますね。

キャンセルボタンは入力内容をキャンセルしてクリアにするために設置しました。

キャンセルボタンでテキストボックスの内容がまとめてクリアされます。

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