>エクセルで入力フォームを作成
エクセルのデータ-フォームのフォームのことでしょうか。
エクセルのデータベース形式の見だし部分を聞いてきますから、前もって一番上の行に見出しを作って、データ-フォームの入力作業に入ります。そして各項目のデータを入力し終って、「新規」をクリックすると、データが最下空白行に書きこまれ、その次の行に入力される用意となります。
ここでは行数的に順次直下行への入力が前提になり、入力セルをスキップする仕組みはありません。
>エクセルで入力フォームを作成
入力用のデータシートをエクセルで作っていると言うことだけなら、エンターキーで、直下(上)行、直右(左)以外にスキップして飛ばさせるには、エンターキーを押したことを、システムから通知してもらわないとなりません。いわゆるイベントプロシージュアです。ワークシートには
、テキストボックスのようにKeyPress、Up、Downなどの
イベントがありません。ですから、やりようがありません。
やるならテキストボックスを1つ貼りつけて
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
t1 = Array("$A$1", "$B$2", "$B$8", "$C$2", "$D$4")
t2 = Array("$B$2", "$B$8", "$C$2", "$D$4", "$A$1")
If KeyCode = 13 Then
Application.MoveAfterReturn = False
For i = 0 To UBound(t1)
If t1(i) = ActiveCell.Address Then
Range(t1(i)) = TextBox1.Text
Range(t2(i)).Activate
TextBox1.Text = ""
TextBox1.Activate
GoTo p01
End If
Next i
End If
p01:
Application.MoveAfterReturn = False
End Sub
としてみました。
これでテキストボックスにエンターで入れていくと、
A1->B2->B8->C2->D4->A1に順次セットできます。しかしD4にセットしたとき、今までのA1,B2,B8,C2,D4のデータ保存とセルクリアはイベントをキッカケに処理が別途必要です。このやり方は回りくどいようです。
むしろシートにボタンを貼りつけ、1シートの入力が終ったらデータ保存するようにしてはどうでしょう。
その際のセルの選択は操作者に任せるか、上記のように
Activeセルの番地をChangeイベントで察知して、次のセルのセレクトする番地を割りだしSelectしてはどうでしょうか。(#1のご回答がこれか)
お礼
お礼のレス遅れましてすみません。 一度参考にさせていただき、自分なりに勉強します。