シートへの連続入力とテキストボックスの解説

ユーザーフォーム講座 動画編 03回
シートへの連続入力とテキストボックスの解説

動画でExcel UseFormシートへの連続入力とテキストボックスの解説

【VBAユーザーフォーム】基礎編第3回 UseFormシートへの連続入力とテキストボックスの解説、オブジェクト名の変更、 ユーザーフォームの必須ワザを紹介、Excel塾のエクセルマクロ講座中級編

動画版「ユーザーフォーム講座」です。
前回はユーザーフォームのテキストボックスに入力した値を、コマンドボタンをクリックすることでシートに転記しました。複数の値を転記する場合に、ユーザーがすでに入力した値を選択して消してやってという作業が面倒です。 そこで、Enterキーを押して値をセルに入力したら、自動的に元の値が消えてくれたら便利です。

マクロ動画 UseFormシートへの連続入力とテキストボックスの解説

https://youtu.be/fb4OlhCrNyA

テキストボックスにフォーカスを戻す

Enterキーを押して値をセルに入力したら、フォーカスをテキストボックスに戻して、元の値をクリアするまでを自動で行う処理。

NAMAE1

それにはSetFocusメソッドを使います。

NAMAE2

ユーザーフォームとコードのウィンドウを複数表示させるには、 メニューの ウィンドウから、上下に並べて表示や左右に並べて表示を選択すると複数のウィンドゥを表示させることができます。
これは上下に並べましたが、左右に並べてもいいです。皆さんの見やすいように並べ替えてくださいね

NAMAE3

このコマンドボタンをクリックした時に転記されるというコードが以下の、
Private Sub CommandButton1_Click()というコードですね。
こちらは Dim lastR As Long
lastR = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
というコードで最終行を取得して、その最終行の2列目に値を入れているというコードなんですね。

Private Sub CommandButton1_Click()
     Dim lastR As Long
     lastR = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
     Cells(lastR + 1, 2).Value = txt金額.Value
     txt金額.SetFocus
     txt金額.Value = ""
 End Sub
 
NAMAE4

その次に、txt金額.SetFocus というコードを追加して、テキストボックスにフォーカスを戻してやります。
txt金額.Value = "" というコードで、バリューに対して、それをなしにするというコードになります。

NAMAE5

オブジェクト名をわかりやすい名前変更

上記のコードでは、デフォルトの名前のままCommandButton1でコードを書いていますけれども、 このCommandButton1ってこれからコマンドボタンを追加する際にどれかどれだか区別するのにとてもわかりずらいのです。 もっとわかりやすい名前にしておいた方が後々楽ということが多々あります。 オブジェクト名を"btn_input" に変更しておきました。

NAMAE6

終了ボタンも名前を変更しておきます。

NAMAE7

フォームを起動します。すると金額を入力というのが出てきましたね。 では14000円と入力してエンタキーを押します。フォーカスがコマンドボタンに移動します。

NAMAE8

もう1度エンターキーを押すと、コマンドボタンが押されたことになり、シートに転記されて、自動的に、フォーカスがテキストボックスに戻って、値が消去されました。

NAMAE9

確認するとつまり、1回目のEnterキーでテキストボックスから、下のコマンドボタンにフォーカスが移動する。2回目のEnterキーで、シートに入力するというコードが発動する。

NAMAE10

CommandButtonのDefaultプロパティとは

現在のコードと設定では、入力の際にエンターキーを2回押す必要がありましたが、 2回押すのは、量が多いと大変な作業になります。
CommandButtonには、デフォルトというプロパティがありますけれども、意味はEnterが押された時の動作をどうするかということになります。 これが 初期値がフォールスになっています。
これをTrueに変えてやります。

NAMAE11

Trueの意味は これは 改行キー(Enterキー)が押されたら、
このボタンインプットが押されたことと同じくするよとていう意味になります。
すると、テキストボックスでEnterキーを押したら、 即それは入力用の入力用のbtn_inputを押したことになるわけです。

NAMAE14

それからテキストボックスのIMEModeを使いやすい設定に変更しておきましょう。 テキストに入力する文字列が分かっている場合は、それがすぐ使えるようにしたいと思います。 IMEモードで設定します。初期値はノーコントロールなんですけれども、今回は数値を入れることがわかっていますから、 IMEモードを これを 3-fmIMEModeDisableにしたいと思います。

NAMAE12

他にも IMEモードがありますからその時によって使い分けてください。 例えばユーザーのお名前とか振りがなとかを入れるときには、半角カタカナとか全角カタカナとか、使用してほしいモードに設定しておきます。

NAMAE13

IMEモードプロパティの使い分け

ユーザーフォーム内で、 パスワードを入力してもらいたい時に、パスワードは他人に知られては困るものですから 外部から見えないようにしたいわけです。 そのようなときは、そんな時にパスワードを伏字にするという機能を使いたい。 そのような時に役に立つのがパスワードキャラクタープロパティーです。

NAMAE15

またパスワードは半角英数字で入力しますから、IMEModeも8-fmIMEModeAlphaに設定しておきます。

NAMAE16

起動させて半角英数字でパスワードを入力してみましょう。ちゃんと伏字になっています。

NAMAE17

入力できる文字数の最大値を設定したい時がある場合には、maxlength property というので指定します。 初期値は0 です。0というのはいくらでも入力できるという意味ですので、ここでは8にしておきましょう。 このような形で設定すると8文字以上は入力できません。

NAMAE18

テキストボックスで、複数の行を入れたい場合はMultLineプロパティをトゥルーにしてやります。

NAMAE19

フォームを起動してテキストを入力してみると、MultiLineがTrueになっているので、複数行を入力できました。

NAMAE20

NAMAE14