• 締切済み

エクセル vbaでの相談です

エクセルでの質問です。 販売管理表を作りたいと思います。 sheet1を商品マスター表とし、下記の見出しがあって A1 JANコード(上一桁4からの番号で13桁) B1 商品コード (14桁) C1 商品名 D1 価格 以下A2行以降、A1行の見出しを元に商品詳細があるとします。 sheet2の下記のA1行を見出しとし、A2行から販売実績をユーザーフォームを使って入力していきたいと思います。 A1 JANコード B1 商品コード C1 商品名 D1 価格 E1 販売番号 フォームを作成し、入力窓に JAN、商品コードのいずれかを入力すると、他の入力窓にsheet1の商品マスター表から該当する商品名、価格を自動入力し登録ボタンを押すと、sheet2の該当セルに反映されるということはできますでしょうか? そして異なる商品のまとめ買いの件数も知りたいので、フォーム上で複数アイテム登録できるようにし、販売番号で件数を管理したいのですが、そちらも可能でしょうか? 販売番号も自動で通し番号が入るようにしたいです。わかりにくい文章で申し訳ありません。ご教授の程、よろしくお願い致します。

みんなの回答

回答No.3

winarrow07です。 必要ないとは思いますが一応補足です。 1個目の例は、 商品マスタがシート1にあり、A列にJANコード、B列に商品名があるとします。 んでユーザーフォームのtextbox1にJANコードを入れると商品マスタから該当するJANコードの商品名(B列)を取得しててtextbox2に入れています。 うまくいかない場合は検索値textbox1.valueをval()でかこんでみてください。 2個目の例は、 登録ボタン(CommandButton1)をクリックしたとき、シート2の最終行を取得して、それに1を足して新しいレコードの追加行を決定してます。 あとはその行のA列にtextbox1の値(JANコード)、B列にtextbox2の値(商品名)を入れています。

回答No.2

>フォームを作成し、入力窓に JAN、商品コードのいずれかを入力すると、他の入力窓にsheet1の商品マスター表から該当する商品名、価格を自動入力 フォームの入力窓の値の変化時にsheet2から該当する商品名、価格とかをvlookup等で引っ張ってきて、入力窓に入れればいいと思います。 (例) Private Sub TextBox1_Change() On Error Resume Next TextBox2.Value = Application.WorksheetFunction.VLookup(TextBox1.Value, Worksheets(1).Range("A:B"), 2, False) End Sub >登録ボタンを押すと、sheet2の該当セルに反映される 登録ボタンを押すと、sheet2の最後の行を取得しその次の行にtextboxの値を貼り付ければいいかと思います。 (例) Private Sub CommandButton1_Click() Dim NewRecordRow As Integer NewRecordRow = Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1 Worksheets(2).Cells(NewRecordRow, 1).Value = TextBox1.Value Worksheets(2).Cells(NewRecordRow, 2).Value = TextBox2.Value End Sub あくまで例ですがとりあえず上記のような感じのコードでできると思います。あとは適宜読み替えて頂ければと。 自動通し番号と複数アイテム登録は応用してやってみてください。

回答No.1

可能ですが、Microsort AccessやFileMakerのほうが適しているのでは?と思います。 データベースソフトには自動で通し番号(シリアル番号)を振る機能も持ってますし、ユーザーフォームも作成できますし、複数のアクセスも可能ですし、テーブル間のリレーション機能も利用できますし、エクセルでは件数(レコード数)に制限がありますし。 どうしてもexcel

gellmax
質問者

お礼

winarrow07 様 助言いただきありがとうございます。僕もAccessを検討してみたのですが、社内的に導入は厳しい状況なんです(涙)ですので、できればexcelでチャレンジしたいと思います。よろしくお願いいたします。

関連するQ&A