|
はじめまして。
VBA初心者ですが、会社で在庫管理システムの作成を任され、悪戦苦闘しております。
かなり最初の部分で躓いてしまいました。
過去ログ検索しても分からなかったので、教えて下さい。
作りかけのコードには執着ありませんので、「もっとこうした方が良いよ」などあれば、ご教示頂けるとうれしいです。
◆最終的に作ろうとしているもの
製品(複数種類)を販売すると、部品毎に在庫が引かれていくシステム。
カスタム依頼も多いので、対応可能なもの。
◆今作っている部分
最初の、製品登録画面。
「Parts List」というシートに、部品の情報がまとまっている。
それとは別に製品(完成品)ごとのシートを作成し、そこへ必要な部品と数を予め登録する
◆引っかかっている点
「Parts List」の(B,5)に「Part Number」という項目があり、
(B,6)以下に1000件程、コードが並んでいる。
製品ページにてコードを入力すると、「Parts List」
シートより、以下の情報を自動的に引っ張ってくる。
1.(C,6)以下のパーツ名
2.(E,6)以下の製造元会社名
3.(M,6)以下の値段(原価)
4.(O,6)以下の値段(販売価格)
◆作成したコード(途中)
Option Explicit
Sub パーツリストから詳細を取得2()
Dim i As Integer
Dim r As Range
Dim LastRow As Long
LastRow = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row
'選択中のシートのE列最終行を取得
i = 6
'For i = 6 To LastRow
Set r = Worksheets("Parts List").Cells.Find(Worksheets(ActiveSheet.Name).Cells(i, 5).Value)
If Not r Is Nothing Then
Cells(i, 7) = Worksheets("Parts List").r.Value
'以降はエラー処理
Else
MsgBox "該当パーツが見つかりません", vbExclamation
End If
'i = i + 1
'Next
End Sub
◆できないこと
1.変数「r」に代入された「Range」の値を変更する(B列を取得しているが、C,Dと横にずれて、それぞれの値を取得したい)
2.製品シートに値を入れる
3.「ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row」の部分で、本当は「5(E列)」にしたいが上手く機能しない。
(今入っているのは「LPA239」などの記号)
仕方なく、製品ページのF列に「=IF(E6="","","○")」を入れて、無理やり認識させている。
4.その他、進行するごとに質問が多数出てくると思います…
|
|