- ベストアンサー
ユーザーフォーム
ユーザーフォームを作成しました。 ExcelにA:番号B:氏名C:住所D:電話で順に入力出来ますが、1行削除・追加した場合、その空欄行に自動で入力出来るようにしたいのですが可能でしょうか。現在は自動的に+1で下行に入力します。 たとえばAに1~20行まで入力されており、10行を削除または挿入した場合にその空欄行に入力出来るようにしたい。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問文章を丁寧に。下記はだいぶん質問文の内容を補って書いているよ。 エクセルでユーザーフォームを作成し、フォーム上にテキストボックスを4つ貼り付けた。さらにコマンドボタンを1つ貼り付けた。 Private Sub CommandButton1_Click() d = Range("A200").End(xlUp).Row 'MsgBox d Cells(d + 1, "A") = UserForm1.TextBox1.Text Cells(d + 1, "B") = UserForm1.TextBox2.Text Cells(d + 1, "C") = UserForm1.TextBox3.Text Cells(d + 1, "D") = UserForm1.TextBox4.Text UserForm1.TextBox1.Text = "" UserForm1.TextBox2.Text = "" UserForm1.TextBox3.Text = "" UserForm1.TextBox4.Text = "" End Sub をコマンドボタンのクリックイベントに作る。 一方フォームの表示用に 標準モジュールに Sub test01() UserForm1.Show vbModeless End Sub を作る。 シートを触れるように、 vbModeless がミソである。 この実行のキッカケはワークブックのオープンイベントなど適当にして(変えて)ください。 test01を実行し、4つのテキストボックスにデータを入れて(ボックス移動はTABキー)コマンドボタンをクリックすると、順次行のA-D列にデータがセットされる。 シートの行を選択し、行削除して、次のデータをフォームのテキストに入れてコマンドボタンをクリックすると、直下行にデータがセットされた。
その他の回答 (1)
- onlyrom
- ベストアンサー率59% (228/384)
やり方はいくつかありますが、一案。 見出し: 1行目 データ: 2行目~ シート: ActiveSheet UserFormのCommandButton1でシートへ転記する場合 '------------------------------------------- Private Sub CommandButton1_Click() Dim R As Long R = 2 Do Until Cells(R, "A").Value = "" R = R + 1 Loop Cells(R, "A").Value = TextBox1.Value Cells(R, "B").Value = TextBox2.Value Cells(R, "C").Value = TextBox3.Value End Sub '--------------------------------------- ActiveSheetでないシートに転記する場合は、 全てのCells(R, )の前に、シート名を付加すること 例えば、 Sheets("Sheet3").Cells(R,"A") とか。 以上。
お礼
お返事大変遅くなりました。 ユーザーフォーム、重宝しております。 有り難うございました。 また、宜しくお願いします。
補足
imogasi様。早速の回答、有り難うございます。 説明不足、申し訳ございません。 これから質問時には、気をつけますので補足質問宜しくお願いします。 VBAを貼り付けましたが、セル・行をDeleteしますと、その行には挿入せずに、下行に入力します。次に入力する場合、空白セルに挿入出来るようにすることは、可能でしょうか?また、できればC列を並び替えもしたいのですが、宜しくお願いします。