VBAでとして、3つぐらい方法が考えられる。
(1)シートの値の変化を捉えて(Changeイベントで)セルに入力する
(2)シートにテキストボックスを1つ設ける方法
(3)ユーザーフォームを設け、そこにテキストボックスを1つ儲け
そこに、入力した値をセルにセットする方法。
(4)データーフォームのShowDataFormを使う。VBAでです。
この方法は、VBAで自分の好きなように扱いにくいと思う。
--
それぞれは連続セルに入力する前提で、手動ではセル選択しない前提とする。
(1)はあまりメリットがない。入力すると自動で下の行を指してくれる。自動化は最初の
Worksheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Activate
ぐらいしか生きない。
ここでは(2)を紹介する。
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Worksheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Activate
Worksheets("Sheet1").TextBox1.Activate
ActiveCell = TextBox1.Text
'ActiveCell.Offset(1, 0).Select
TextBox1.Text = ""
Worksheets("Sheet1").TextBox1.Activate
End If
End Sub
初めだけTextBox1内をクリックすること。
データの最後はENTERキーを押す。
上記はB列にデータをセットする固定だが、G列にも使えるようにするには、
Worksheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Activate
を省き、'ActiveCell.Offset(1, 0).Selectを生かすとできる。
ーー
理解している自分で入力をやる分にはよいが、上記の注意事項の事を伝えるには、留意事項の解説文字文が必要であろう。
(3)
Sub test03()
UserForm1.Show (vbModeless)
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Worksheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Activate
UserForm1.TextBox1.SetFocus
ActiveCell = UserForm1.TextBox1.Text
'ActiveCell.Offset(1, 0).Select
TextBox1.Text = ""
UserForm1.TextBox1.SetFocus
End If
End Sub
かな。危なっかしい点はあるかも。
====
質問文について
>EXCELのVBAで教えて下さい。
シート1のA列にはB列が入力されると自動入力されるNo.があり、C~G列もB列が入力されると自動入力されます。
は質問の本筋に関係なく、不要。
>又、上記入力後に、シート2のH~N列をコピーして、シート3のA~G列に値のみの貼り付けを行い保存した後、シート3のA~G列をコピーしてcsvファイルを作成して保存したいです。
別質問内容が適当。
ーー
この質問問題は結構難しかった。
この質問は丸投げの質問で(禁止されている)、質問の表現振りからすると、質問者には難しい課題ではないかな。
補足
御回答有難うございます。 追加の質問ですが、この場合のフォームの作成方法は、VBEでおこなうのでしょうか? 方法、やり方がわかりません。 以上、宜しく御願い致します。