VBAユーザーフォームでテキストボックス入力をセルに出力する方法

このQ&Aのポイント
  • VBAユーザーフォームでテキストボックスとコマンドボタンを使用し、入力した文字・値をセルに出力する方法について解説します。
  • コマンドボタンを押下すると、入力した文字・値がセルB1に出力されます。繰り返し入力するとセルB2以降に順番に出力されます。
  • さらに、セルを罫線で囲む方法や外枠のみを太線にする方法についても説明します。
回答を見る
  • ベストアンサー

VBE、ユーザーフォームに関して質問があります。VBAを知って1カ月に

VBE、ユーザーフォームに関して質問があります。VBAを知って1カ月に満たない初心者です。 ユーザーフォームでテキストボックスとコマンドボタンを1つずつ作りました。コマンドボタンを押すとテキストボックスに入れた文字・値がセルB1に入力されるようにしました。続けてテキストボックスに文字・値を入力し、コマンドボタンを押すとB2に入力されるようにしています。 ここからが質問なのですが、 コマンドボタンを押したときにA1に番号を順にふり、さらにセルを罫線で囲みたいのです。図で示すと、  A   B        A   B  _ ___      _ ___  |1|りんご| ⇒ |1|りんご|  - ---      - ---               |2|みかん|                - ---   このような感じです。また、外枠のみを太線にするということが可能であればその方法も教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

'---------------------------------- Private Sub CommandButton1_Click()  Dim LastRow As Long  LastRow = Cells(Rows.Count, 2).End(xlUp).Row    If LastRow = 1 Then    Cells(LastRow + 1, 1).Value = 1  Else    Cells(LastRow + 1, 1).Value = Cells(LastRow, 1).Value + 1  End If  Cells(LastRow + 1, 2).Value = TextBox1.Value  With Cells(LastRow + 1, 1).Resize(1, 2).Borders    .LineStyle = xlContinuous    .Weight = xlThin    .ColorIndex = xlAutomatic  End With  TextBox1.Value = ""  TextBox1.SetFocus End Sub '--------------------------------- 質問者の提示のコードの最後に、Unload UserForm1がありますが、 データは次々に入れていくんですよね。 で、あれば、そこでUnloadしては拙いと思いますが、、、 また、罫線は、デフォルトの線にしてありますので、 外枠太線はマクロ記録を取るなりして自分でトライすること。 以上です。

kamioni
質問者

お礼

myRangeさんのコードを入れたら全くその通りになりました。前回に引き続きありがとうございましたm(__)m

その他の回答 (2)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

>コマンドボタンを押すとテキストボックスに入れた文字・値がセルB1に入力されるようにしました。 >続けてテキストボックスに文字・値を入力し、コマンドボタンを押すとB2に入力されるようにしています。 これができるのであれば、質問の操作をマクロの記録で記録し 少し加工すればできると思うのですが、どうでしょう マクロの記録とはexcel上での操作をVBAのコードにしてくれます 特に初心者には大変有効だと思いますよ 因みに、commandbuttonに設定しているコードを提示されると アドバイスがしやすいです 参考までに

kamioni
質問者

補足

Private Sub CommandButton1_Click() Dim LastRow As Long LastRow = Cells(Rows.Count, 2).End(xlUp).Row Cells(LastRow + 1, 2).Value = TextBox1.Value Unload UserForm1 End Sub これがコードです。ちなみにB列の2行目から文字が入るようになっています。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

ユーザーフォームとは切り離して考えるのも必要ですよ。 「マクロの記録」でコード自動生成させてみる。 いくつかの処理を経て、目的が達成されるように作成していくこと。 ※最終行を取得するコードは回答が示されましたよね? まず ・あの方法で列Bの最終セルに値を入れる」までがひとくくり。 次に ・セルB1がNULLでなければセルA1に値1を入れる ・セルB2がNULLでなければセルA2に値2を入れる ・セルA1、セルA2を選択して、右下ダブルクリックで列Aに連番付与。 までがひとくくり。 次に ・セルA1のCurrentRegionを選択する。 までがひとくくり。 次に ・セルの書式設定で、罫線(細線)で全体を十字に設定。 ・セルの書式設定で、罫線(太線)で全体を囲む。 までがひとくくり。 これら一連の処理ができたら、ユーザーフォームのボタンに書く。 それぞれマクロの記録を取って、どんなコードになるか、参照してみてください。 冗長な記述やその時々の固有の値もありますが、共通部分が見えてくると思いますよ。 コード記録したものはF8キー押せば一行ずつのトレースもできますし。 ちなみに、VBEって VisualBasic Editorです。 (Alt+F11キー押下で表示されるプログラムのこと) 言語としてはVBA(VisualBasic for Application)です。

kamioni
質問者

お礼

前回同様素早い回答ありがとうございます。 確かにどういうプログラムを組めばいいのかに集中するあまり、マクロの記録からVBAを読み取る、こんな単純なことを見落としていました。bin-chanさんが言われてる通りにやってみましたが、新たな疑問が浮上してきました。しかし、それを自分なりによく考えたいので、この場では再質問ではなく、感謝の言葉を述べておきます。 ありがとうございました。

関連するQ&A

  • VBEについて質問です。まだ作り始めて2週間たらずの初心者ですので、言

    VBEについて質問です。まだ作り始めて2週間たらずの初心者ですので、言葉の意味も正確に把握出来ていない点もあり、質問の内容が分かりにくいなどあるかもしれませんが、よろしくお願いします。 ユーザーフォームで2つのテキストボックスと一つのコマンドボタンを作りました。テキストボックスに入れた文字や値がコマンドボタンを押したらセルA1、B1に入るようにするということは Private Sub CommandButton1_Click() TextBox1.ControlSource = "A1" TextBox2.ControlSource = "B1" End Sub このような感じで一応できたのですが、再びテキストボックスに文字や値を入れ、コマンドボタンを押したときに一つ下のセル、つまりA2、B2にその文字や値を入れるようにするにはどのようにすればいいのでしょうか?

  • VBAのユーザーフォーム・・

    教えてください。 ユーザーフォームのテキストボックス・コンボボックスに入力した文字列をコマンドボタンを押したら、セルC1・B1に反映させたいのですが、できません。 このコマンドボタンには他のプログラムも入っており、同時にプログラムを実行したいのですが。

  • excel vba ユーザーフォーム

    現在、セルa101からa110までに「商品名」、セルb101からb110までに「金額」が 入力済みです。 このデータを、ユーザーフォーム上にコンボボックスを2つ作成し、セルa1へ 商品名を選択後、入力。また、b2へ金額を選択後、入力させたいのです。 また、ユーザーフォーム上にテキストボックスを作成し、ここに入力した 「備考」の全角10文字をc1へ移動したいです。 今のところ、ユーザーフォーム、コンボボックス、テキストボックスを作成した だけで 立ち往生しています。 どなたか、ご教授お願いいたします。

  • VBAユーザーフォームで

     エクセルVBAでユーザーフォームより、テキストボックスで入力させたものをセルに表示させようとしています。  テキストボックスは1と2があり、テキストボックス1で入力した値の最初の5文字+固定値をテキストボックス2に自動で入力(表示)したいのですがなかなかうまくいきません。(自動入力後、手動で一部修正します。)  VBAをはじめたばかりの初心者ですが、どうぞよろしくお願いします。

  • VBEのユーザーフォームを消す方法

    いつもお世話になっております VBE初心者なので教えてください エクセルのVBEで、ユーザーフォームを表示 させた後、セルに指定した文字を入力してENTERを押すと表示されていたユーザーフォームを消すことをやりたいのですが方法がわからず困っています 良い方法がありましたら教えてください

  • ユーザーフォームについて

    エクセル2002です。 ユーザーフォーム内のテキストボックスを使用して、 (1)A1のセルに1と入力されている状態でマクロを起動した場合、 (2)ユーザーフォーム内のテキストボックスには2と表示される (3)ユーザーフォーム内のボタンを押すと、A2のセルに2と入力される。 このような流れで、A列のデータ最終行に番号をふっていきたいです。 (A列のデータ最終行がA30なら、A31に31と番号をふる) ユーザーフォームのテキストボックスとボタンは作ってあるのですが、 それぞれに入れるコードを教えていただけないでしょうか。 よろしくお願いします。

  • VBユーザーフォームで時間入力

    勤務時間を入力して労働時間を計算するユーザーフォームです。 出勤時間として、 テキストボックス1に(時間)、例えば13と 入力。 テキストボックス2に(分)、例えば40と入力。 退社時間として、 テキストボックス3に(時間)、例えば18と入力。 テキストボックス4に(分)、例えば30と入力。 コマンドボタン1を押して、sheet1のA1セルに出勤時間、B1のセルに退社時間を転記させたい。 A1に13:40 B1に18:30 この様に転記させたいです。 休みの人の場合は、入力しないでコマンドボタン1を押してA1とB1のセルは空欄に したいです。 だれか詳しい方、上記を実行できるコードを教えて下さい。 よろしくお願いします。

  • VBA ユーザーフォーム

    エクセルVBAのユーザーフォームのInitializeでnに値を代入し Private Sub UserForm_Initialize() Dim n As Long n = 19 ・・・・・ End Sub 同じユーザーフォームのボタンコマンドが押されたら Private Sub CommandButton2_Click() MsgBox n Worksheets("AAA").Cells(n, 3).Value = Me.テキストボックスの値.Text n = n + 1 End Sub nの値を用いてセルにテキストボックスの値を入れるというプログラムです。 値をいれたら、nをひとつ増やして次に備えるようにしたいのですが。 そもそも最初にnの値が受け渡しできません。 ボタンコマンドの最初の行でメッセージボックスにnの値を表示して確認しても何も数字が表示されません。 nの値の受け渡しを方法を教えてください。

  • ユーザーフォーム入力後の値の貼付け方は?

    EXCELのVBEでユーザーフォームを作成しました。 テキストボックスに入力した値をEXCELシート上に 反映させるにはどのようにすればいいのでしょうか? EXCELシート上ではセルではなくてやはり テキストボックスに値が入るようにしなくてはできないのでしょうか? 初心者です。教えてください!

  • VBA フォーム作成

    ユーザーフォームを作成しテキストボックス、コマンドボタンを配置して、コマンドボタンに処理の内容を記述して実行することは出来たのですが、テキストボックスに文章を書く際に任意の位置で改行して実行すると改行した部分でセルA1とセルA2に分かれて入力されてしまいます。User Form1のプロパティMultiLineをTrueにしています。 アドバイス頂けますか。

専門家に質問してみよう