すべてのカテゴリ » 仕事・キャリア » スキルアップ・資格 » スキルアップ

質問

終了

在庫報告というブックがあります。
D列に 管理No.、 E列に薬品名、 G列に在庫量が入力してあります。
M列に発注管理用として在庫が必要発注数より下回ればアラートを出すようにマクロを現在組んでいます。

イメージ
D列     E列      G列 M列  
管理No.  薬品名    在庫量 発注アラート
000050  ヘキサン   0.100 ○○本発注してください!
000059  アロンアルファ 0.700
・     ・       ・     ・
・     ・       ・     ・
・     ・       ・     ・



また、必要発注数という別のシートには、
A列に薬品名と、B列に必要発注数が、何件も入力されており、
これを参照してアラートを出しています。

このマクロ自体はこれでいいのですが
応用?をできないかと思っています。

マクロを組む際に、列全体を指定するマクロは組めるのですが
範囲指定でマクロを組めないのです。

VBAを使ってマクロを組む際に
列を指定する時に使うのはROWとかRangeですよね?

例えば、E列の8行目~E列の40行目が対象範囲で
E列の対象範囲にある薬品名から必要発注数のシートに入力されている必要発注数を取得したい場合

MyValue = Application.VLookup(Sheets("在庫報告").Cells(Row, 5), Range("必要発注数!A:B"), 2, False)

ではなくて式はどうすればいいのでしょうか?

また、在庫数と最低必要数の比較をする際にも対象範囲を指定したい場合
どうすればいいのかわかりません。
ご教授いただけないでしょうか?


以下、作っているマクロ式
---------------------------
Sub 試作()

' 試作
'

'
Dim Row As Integer
Dim MyValue As Integer

Row = 2
Range("M2:M40").Select
Selection.ClearContents
'
' E列の購入品名がブランクになったら終了
'
Do Until Sheets("在庫報告").Cells(Row, 5) = ""
'
' E列の購入品名から 必要発注数 に入力されている最低必要
'在庫数を取得
'
MyValue = Application.VLookup(Sheets("在庫報告").Cells(Row, 5), Range("必要発注数!A:B"), 2, False)

'
'薬品が存在する場合
'
If Not IsError(MyValue) Then
'

'在庫数と最低必要数の比較
'
If Sheets("在庫報告").Cells(Row, 16) < CInt(MyValue) Then
Sheets("在庫報告").Cells(Row, 13) = MyValue & "本発注してください!"


End If
End If
Row = Row + 1
Loop

End Sub
---------------------------------------------

  • 質問者:たか
  • 質問日時:2014-10-24 08:12:41
  • 0

関連する質問・相談

Sooda!からのお知らせ

一覧を見る