重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

「薬品入力」のシートに書いてある内容をグループごとに「保管場所VBA」シートに取り出すためにはどうしたら良いのですか。

たとえば、薬品入力のシートに「亜鉛 E 1」 と入力してあったら、
保管場所VBAのところにEと入力すると 亜鉛 E 1 が出るようにしたいです。

以下は、以前に質問して、お答えいただいた内容を参考にしてつくりました。
しかし、「オブジェクトが必要です。」と出てしまいます。
どうしたら良いのでしょうか。
よろしくお願い致します。



Sub 薬品管理()

Dim 保管, 薬品名 As Worksheet
Dim 場所入力 As String
Dim 縦, 行 As Integer
Dim 保管最大, 薬品名最大 As Integer


Set 保管 = Worksheets("保管場所VBA")
Set 薬品名 = Worksheets("薬品名入力")

場所入力 = 窓.Cells(3, 2).Value

'保管場所VBAシート C列の最終行を取得し、最終行が5以上であれば、B6~C列最終行までの値を削除する

保管最大 = 保管.Range("B" & Rows.Count).End(xlUp).Row
If 保管最大 > 5 Then 保管.Range("B6:C" & 保管最大).ClearContents


'薬品名入力シート B列の最終行を取得

薬品名最大 = 薬品名.Range("B" & Rows.Count).End(xlUp).Row

縦 = 6
For 行 = 3 To 薬品名最大
If 薬品名.Cells(行, 4).Value = 場所入力 Then

'薬品名入力ートのB列~DH列の値を保管場所シートのB~G列に出力する

保管.Cells(縦, 2).Resize(, 3) = 薬品名.Cells(行, 2).Resize(, 3).Value
縦 = 縦 + 1

End If

Next

保管.Activate

End Sub

「エクセルVBAでグループごとに取り出すた」の質問画像

A 回答 (1件)

宣言していないシート名を指定すればエラーになるのは当然ですよね。


誤)場所入力 = 窓.Cells(3, 2).Value
正)場所入力 = 保管.Cells(3, 2).Value

エラーとは関係ありませんが
If 薬品名.Cells(行, 4).Value = 場所入力 ThenのCells(行, 4)はCells(行, 3)ではありませんか?
I
    • good
    • 0
この回答へのお礼

ありがとうございます。
確かに宣言していないシート名がありました。

また、(行,4)→ (行,3)でした。
ありがとうございました。助かりましたm(_)m

お礼日時:2013/07/24 23:14

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