- ベストアンサー
VBAユーザーフォームでテキストボックス入力をセルに出力する方法
- VBAユーザーフォームでテキストボックスとコマンドボタンを使用し、入力した文字・値をセルに出力する方法について解説します。
- コマンドボタンを押下すると、入力した文字・値がセルB1に出力されます。繰り返し入力するとセルB2以降に順番に出力されます。
- さらに、セルを罫線で囲む方法や外枠のみを太線にする方法についても説明します。
- みんなの回答 (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さんが言われてる通りにやってみましたが、新たな疑問が浮上してきました。しかし、それを自分なりによく考えたいので、この場では再質問ではなく、感謝の言葉を述べておきます。 ありがとうございました。
お礼
myRangeさんのコードを入れたら全くその通りになりました。前回に引き続きありがとうございましたm(__)m