- ベストアンサー
UserFormにテキストボックスを作成してその内容をExcleに反映
初めまして。ExcelのVBAをチャレンジしています。 初心者なので良くわからないため質問させて頂きました。 今、商品登録用のユーザーフォームを作成しています。 ユーザーフォームには TextBox1=「商品No.」 TextBox2=「商品名」 TextBox3=「単価」 TextBox3=「仕入先」 CommandButton1=「登録」 CommandButton2=「終了」 があります。 「商品No.」,「商品名」,「単価」,「仕入先」を入力し、「登録」をクリックしたらExcelに横一列(参考1)に反映させ、入力・登録を繰り返し行い(商品が入ったら随時入力)下に追加していきたいのですが、どの様にすれば宜しいでしょうか? <参考1> A B C D 1 商品No. 商品名 単価 仕入先 2 001 ○○○ 10円 △△ 3 ・ ・ ・ ・ 4 ・ ・ ・ ・ 5 ・ ・ ・ ・
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
必要最低限のコードです。 実情に合わせて変更してください。 Private Sub CommandButton1_Click() Dim i As Long i = Range("A65536").End(xlUp).Row + 1 Range("A" & i) = Format(UserForm1.TextBox1.Value, "000") Range("B" & i) = UserForm1.TextBox2.Value Range("C" & i) = UserForm1.TextBox3.Value & "円" Range("D" & i) = UserForm1.TextBox4.Value End Sub
その他の回答 (1)
- popesyu
- ベストアンサー率36% (1782/4883)
まず第一に原理的には下記になります。 Range("A2")=商品No Range("B2")=商品名 Range("C2")=単価 Range("D2")=仕入先 1.Range("A1")の部分は動的に変わるので変数化した方が楽になります。 例えば下記のようにして Cells(x,y)=商品No xとyの値をその都度設定します。 2.Forなどのループ処理を入れるとコード的に美しくなります(修正も楽になります)。 3.常に最終行の次の行に入力するということになるので、最終行の取得を自動化することも必要です。 利用するのはUsedrangeやEnd(xlUp)になります。 参考 http://www.k1simplify.com/vba/tipsleaf/leaf23.html 最終的には上記内容をそれぞれ組み合わせて一本化します。 最初の部分以外は別に必須というわけでもないです。幾らでもやりようがあるので(例えば最終行はActiveCellのある行をそれとみなすとか、挿入する行はその都度ユーザーに選択させるとか)、泥臭い方法だけでも一応形にはなります。 正解が別にあるわけではないので、ヘルプや色々な参考サイトをまわって理解しやすいコードをコピペして、それを修正しながら作っていきましょう。
お礼
早速の回答有難うございました! そうなんですよね、正解がある訳ではないので色々試してはみるのですが、なかなか上手くいかずいつも苦労しております。 参考サイトも教えてくださって有難うございました。
お礼
早速の回答有難うございます。 上記コードで無事出来ました! とても、助かりました!