プロが教える店舗&オフィスのセキュリティ対策術

初めまして。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 ・     ・   ・  ・

A 回答 (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
    • good
    • 2
この回答へのお礼

早速の回答有難うございます。
上記コードで無事出来ました!
とても、助かりました!

お礼日時:2008/02/11 12:38

まず第一に原理的には下記になります。


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のある行をそれとみなすとか、挿入する行はその都度ユーザーに選択させるとか)、泥臭い方法だけでも一応形にはなります。
正解が別にあるわけではないので、ヘルプや色々な参考サイトをまわって理解しやすいコードをコピペして、それを修正しながら作っていきましょう。
    • good
    • 0
この回答へのお礼

早速の回答有難うございました!
そうなんですよね、正解がある訳ではないので色々試してはみるのですが、なかなか上手くいかずいつも苦労しております。
参考サイトも教えてくださって有難うございました。

お礼日時:2008/02/11 12:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!