テキストボックスの値をセルに記入するには?

Question 14.1 Previous Next
質問なんですけど、
VBのフォームで入力した値をシートのセルにうつすには、どうすればイイですか。
まだ高校1年なので回りに聞く人材がいないんです。よかったらお願いします。エクセル97を使ってます。
Answer   Copyright (C) 1999.1.2 永井善王
エクセル97のユーザーホームから値を入力する方法は、いろいろ、あります。
ここでは、任意の値を自由に入力できるテキストボックスを使って、お答えします。

アドレスシート 左図に、E-mailアドレスを入力するシートを作ってみました。ワークシートの名前は「SSS」に、ユーザーフォームの Captionは「アドレス入力」にしましょう。

ユーザーフォームのTextBox1に入力した値をA1セルに、TextBox2の値は、B1セルに記入することとにします。
左図はすでに、氏名とE-mailアドレスを入力し終わって、OKボタンにフォーカスが移った状態になっています。
この回答では、個々のテキストボックスに値を入力して Enterキーを押すと、すぐにセルに記入するようにしましたが、他に、OKボタンが押されてから記入する方法が、考えられます。

マクロの作り方としては、まず、TextBox1にマウスを合わせた状態で、右クリックしてショートカットメニューを映し、 「コードの表示」を左クリックしてコード画面(下図)を映し出します。左上の「オブジェクト」のボックスに「TextBox1」と表示されていることを確認します。
             コード画面
続いて右上の「プロシージャー」のボックスに「exit」と表示させると、Enterキーが押された時に実行されるプロシージャーが用意されるので、追加入力して下記のように仕上げます。
  Private Sub TextBox1_exit(ByVal cancel As MSForms.ReturnBoolean)
      氏名 = TextBox1.Text
      Worksheets("SSS").Cells(1, 1).Value = 氏名
  End Sub
TextBox2も同様にして、下記のように仕上げます。
  Private Sub TextBox2_exit(ByVal cancel As MSForms.ReturnBoolean)
      Sheets("SSS").Cells(1, 2).Value = TextBox2.Text
  End Sub
そして、CommandButton1については、右上の「プロシージャー」のボックスに「Click」と表示させ下記のように仕上げます。
  Private Sub CommandButton1_Click()
      Unload Me
  End Sub
最後に、メニューバーの「挿入」の「標準モジュール」を左クリックして、映ったコード画面に下記のように入力します。
  Sub テキストボックスの値をセルに記入する()
       Worksheets("SSS").Activate
          Cells.Clear
          UserForm1.Show
  End Sub
これで完成ですから、マクロを実行してみてください。
もしも、実行方法がわからなければ、「
ユーザーフォームのマクロを簡単に実行できるようにするには」を見てください。

 

Excel VBA Macro