VBAユーザーフォームでテキストボックス入力をセルに出力する方法
- VBAユーザーフォームでテキストボックスとコマンドボタンを使用し、入力した文字・値をセルに出力する方法について解説します。
- コマンドボタンを押下すると、入力した文字・値がセルB1に出力されます。繰り返し入力するとセルB2以降に順番に出力されます。
- さらに、セルを罫線で囲む方法や外枠のみを太線にする方法についても説明します。
- ベストアンサー
VBE、ユーザーフォームに関して質問があります。VBAを知って1カ月に
VBE、ユーザーフォームに関して質問があります。VBAを知って1カ月に満たない初心者です。 ユーザーフォームでテキストボックスとコマンドボタンを1つずつ作りました。コマンドボタンを押すとテキストボックスに入れた文字・値がセルB1に入力されるようにしました。続けてテキストボックスに文字・値を入力し、コマンドボタンを押すとB2に入力されるようにしています。 ここからが質問なのですが、 コマンドボタンを押したときにA1に番号を順にふり、さらにセルを罫線で囲みたいのです。図で示すと、 A B A B _ ___ _ ___ |1|りんご| ⇒ |1|りんご| - --- - --- |2|みかん| - --- このような感じです。また、外枠のみを太線にするということが可能であればその方法も教えて下さい。
- kamioni
- お礼率72% (16/22)
- Visual Basic
- 回答数3
- ありがとう数4
- みんなの回答 (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しては拙いと思いますが、、、 また、罫線は、デフォルトの線にしてありますので、 外枠太線はマクロ記録を取るなりして自分でトライすること。 以上です。
その他の回答 (2)
- hige_082
- ベストアンサー率50% (379/747)
>コマンドボタンを押すとテキストボックスに入れた文字・値がセルB1に入力されるようにしました。 >続けてテキストボックスに文字・値を入力し、コマンドボタンを押すとB2に入力されるようにしています。 これができるのであれば、質問の操作をマクロの記録で記録し 少し加工すればできると思うのですが、どうでしょう マクロの記録とはexcel上での操作をVBAのコードにしてくれます 特に初心者には大変有効だと思いますよ 因みに、commandbuttonに設定しているコードを提示されると アドバイスがしやすいです 参考までに
補足
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)
ユーザーフォームとは切り離して考えるのも必要ですよ。 「マクロの記録」でコード自動生成させてみる。 いくつかの処理を経て、目的が達成されるように作成していくこと。 ※最終行を取得するコードは回答が示されましたよね? まず ・あの方法で列Bの最終セルに値を入れる」までがひとくくり。 次に ・セルB1がNULLでなければセルA1に値1を入れる ・セルB2がNULLでなければセルA2に値2を入れる ・セルA1、セルA2を選択して、右下ダブルクリックで列Aに連番付与。 までがひとくくり。 次に ・セルA1のCurrentRegionを選択する。 までがひとくくり。 次に ・セルの書式設定で、罫線(細線)で全体を十字に設定。 ・セルの書式設定で、罫線(太線)で全体を囲む。 までがひとくくり。 これら一連の処理ができたら、ユーザーフォームのボタンに書く。 それぞれマクロの記録を取って、どんなコードになるか、参照してみてください。 冗長な記述やその時々の固有の値もありますが、共通部分が見えてくると思いますよ。 コード記録したものはF8キー押せば一行ずつのトレースもできますし。 ちなみに、VBEって VisualBasic Editorです。 (Alt+F11キー押下で表示されるプログラムのこと) 言語としてはVBA(VisualBasic for Application)です。
お礼
前回同様素早い回答ありがとうございます。 確かにどういうプログラムを組めばいいのかに集中するあまり、マクロの記録から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にその文字や値を入れるようにするにはどのようにすればいいのでしょうか?
- ベストアンサー
- Visual Basic
- VBAのユーザーフォーム・・
教えてください。 ユーザーフォームのテキストボックス・コンボボックスに入力した文字列をコマンドボタンを押したら、セルC1・B1に反映させたいのですが、できません。 このコマンドボタンには他のプログラムも入っており、同時にプログラムを実行したいのですが。
- ベストアンサー
- Visual Basic
- excel vba ユーザーフォーム
現在、セルa101からa110までに「商品名」、セルb101からb110までに「金額」が 入力済みです。 このデータを、ユーザーフォーム上にコンボボックスを2つ作成し、セルa1へ 商品名を選択後、入力。また、b2へ金額を選択後、入力させたいのです。 また、ユーザーフォーム上にテキストボックスを作成し、ここに入力した 「備考」の全角10文字をc1へ移動したいです。 今のところ、ユーザーフォーム、コンボボックス、テキストボックスを作成した だけで 立ち往生しています。 どなたか、ご教授お願いいたします。
- ベストアンサー
- Excel(エクセル)
- 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のセルは空欄に したいです。 だれか詳しい方、上記を実行できるコードを教えて下さい。 よろしくお願いします。
- 締切済み
- Visual Basic
- 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の値の受け渡しを方法を教えてください。
- 締切済み
- Visual Basic
- ユーザーフォーム入力後の値の貼付け方は?
EXCELのVBEでユーザーフォームを作成しました。 テキストボックスに入力した値をEXCELシート上に 反映させるにはどのようにすればいいのでしょうか? EXCELシート上ではセルではなくてやはり テキストボックスに値が入るようにしなくてはできないのでしょうか? 初心者です。教えてください!
- ベストアンサー
- オフィス系ソフト
- VBA フォーム作成
ユーザーフォームを作成しテキストボックス、コマンドボタンを配置して、コマンドボタンに処理の内容を記述して実行することは出来たのですが、テキストボックスに文章を書く際に任意の位置で改行して実行すると改行した部分でセルA1とセルA2に分かれて入力されてしまいます。User Form1のプロパティMultiLineをTrueにしています。 アドバイス頂けますか。
- 締切済み
- その他MS Office製品
お礼
myRangeさんのコードを入れたら全くその通りになりました。前回に引き続きありがとうございましたm(__)m