大体でIT
大体でIT
2022/5/30
Excel VBAで、ユーザーフォームから連続でシートに値を入力には、「最終行+1行」に入力、ユーザーフォームをクリア、そして1番目のテキストボックスをフォーカスすると、できます。ユーザーの目線に立って、入力しやすいユーザーフォームを作成していきましょう。
この記事では、ユーザーフォームから、連続でシートに値を入力する方法について、ご紹介します。
ユーザーフォームからシートの最終行+1行目に入力
ユーザーフォームをクリア
1つ目のテキストボックスにフォーカス
使うユーザー目線で、スムーズな入力ができるようにしていきましょう。
では、ユーザーフォームから、連続でシートに値を入力する方法について、解説していきます。
ユーザーフォームから連続でシートに値を入力できるようにして、入力する作業を効率化できます。
ユーザーフォームから連続でシートに入力する、というのをやってみます。
やりたい内容としては、ユーザーフォームから連続でシートに入力したい、ということになります。
ユーザーフォームから連続で入力したい
シートに値を入力して、ユーザーフォームの値をクリアできます。
シートに値を入力して、ユーザーフォームの値をクリアできました。
連続で入力
ユーザーフォームをクリアして、フォーカスも1つ目のテキストボックスにしていますので、そのまま値を入力して、シートに入力できます。
ボタンをクリックしたら、シートに値を入力して、ユーザーフォームの値はクリアできます。
さらに連続で入力
同じように、ユーザーフォームの値はクリアされていて、フォーカスも1つ目のテキストボックスに移っていますので、そのまま入力して、ボタンをクリックです。
では、ユーザーフォームを作成する手順について、解説していきます。
入力ミスがあった場合に、ユーザーフォームの値をクリアするため、ボタンを追加しておくと便利です。
ユーザーフォームの値をクリア
ユーザーフォームのクリアボタンをクリックしてみます。
こんな感じで、ユーザー目線に立って、ボタンを作成できるといいですね。
ユーザーフォームを作成
最終行の1行下に入力するVBAコードの作成
テキストボックスのクリアとフォーカスのVBAコードを作成
クリアボタンの作成
ユーザーフォームを作成
ラベルとテキストボックス、そしてボタンを配置します。
テキストボックスのオブジェクト名は、「Textbox1」~「Textbox4」となっています。
ボタンクリックで、最終行の1行下に入力するVBAコードを記載していきます。
「入力」のボタンをダブルクリックして、VBAコードを入力します。
「入力」ボタンをダブルクリック
入力するVBAコード
4つのテキストボックスの値を、シートに入力します。
Private Sub CommandButton1_Click()
With Cells(Rows.Count, "A").End(xlUp) '最終行を取得
.Offset(1 , 0 ) = TextBox1 .Value '商品
.Offset(1 , 1 ) = TextBox2 .Value '品番
.Offset(1 , 2 ) = TextBox3 .Value '価格
.Offset(1 , 3 ) = TextBox4 .Value '数量
End With
End Sub
「Controls」を使って、ループして入力することもできます。
Private Sub CommandButton1_Click()
With Cells(Rows.Count, "A").End(xlUp)
'「Controls」を使ってループして入力
For i = 1 To 4
.Offset(1, i - 1) = Controls ("TextBox" & i ).Value
Next
End With
End Sub
入力する項目が増えてきたら、「Controls」を使って入力すると便利です。
では、ユーザーフォームを開いて、値を入力してみます。
ユーザーフォームから値を入力
ユーザーフォームに値を入力して、入力ボタンをクリックしてみます。
入力するだけだと不親切なので、入力後にテキストボックスの値をクリアして、1つ目のテキストボックスにフォーカスしてみます。
テキストボックスの値をクリアして、フォーカスするVBAコードを追加します。
Private Sub CommandButton1_Click()
With Cells(Rows.Count, "A").End(xlUp)
For i = 1 To 4
.Offset(1, i - 1) = Controls("TextBox" & i).Value
Next
End With
'テキストボックスをクリア
For i = 1 To 4
Controls("TextBox" & i).Value = ""
Next
'1つ目のテキストボックスをフォーカス
TextBox1.SetFocus
End Sub
ユーザーフォームに値を入力して、入力ボタンをクリックします。
値を入力して入力ボタンをクリック
シートに値を入力して、ユーザーフォームの値をクリアできます。
シートに値を入力して、フォームをクリア
シートに値を入力して、ユーザーフォームの値をクリアできました。
そして、クリアした後に、1つ目のテキストボックスにフォーカスしておくと、次の入力がスムーズです。
1つ目のテキストボックスをフォーカス
こんな感じで、シートに入力後、テキストボックスをクリア、1つ目のテキストボックスにフォーカスすると、連続で入力することができます。
ユーザーフォームのクリアのボタンを、追加すると便利になります。
クリアのボタンをダブルクリックして、VBAコードを入力します。
「クリア」のボタンをダブルクリック
入力するVBAコード
テキストボックスの値をクリアと、1つ目のテキストボックスにフォーカスするVBAコードです。
Private Sub CommandButton2_Click()
'テキストボックスをクリア
For i = 1 To 4
Controls("TextBox" & i).Value = ""
Next
'1つ目のテキストボックスをフォーカス
TextBox1.SetFocus
End Sub
では、ボタンをクリックして、フォームをクリアしてみます。
ボタンでフォームをクリア
1つ目のテキストボックスをフォーカスできています。
この記事では、ユーザーフォームから、連続でシートに値を入力する方法について、ご紹介しました。
ユーザーフォームからシートの最終行+1行目に入力
ユーザーフォームをクリア
1つ目のテキストボックスにフォーカス
使うユーザー目線で、スムーズな入力ができるようにしていきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。