質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

3202閲覧

vba vlookup関数 エラー 1004 wooksheetFunctionクラスのVlookupプロパティを取得できませんに対しての処置

TARA91PS254

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2021/08/10 10:37

前提・実現したいこと

既存にあるエクセルのデータシートから単価を抜き出し、
最新の注文情報にある単価データとの比較を行いたいです
その際、まず手始めに最新の注文情報に単価情報が無かった場合には
既存にあるエクセルのデータシートから単価を転記をしたいです
しかし、現状では他ブックにあるエクセルのデータシートから単価を抜き出す
ことができないでいます

発生している問題・エラーメッセージ

別ブックを参照してvlookupで項目を反映させたいのですが、参照範囲のコードの部分で以下のエラーメッセージが発生しています。

エラーメッセージ
実行時エラー 1004
wooksheetFunctionクラスのVlookupプロパティを取得できません

該当のソースコード

Sub 発注管理表単価取り込み2()

Dim j As Long
Dim i As Long
Dim SearchRange As Range
Dim wb As Workbook
Dim ws As Worksheet

Columns("F").Insert ' F 列に挿入
Range("F1") = "単価2"

Workbooks.Open Filename:="C:\Users\watar\Documents****\T生産計画から必要な情報抜き取り資料.xlsx"

Set wb = Workbooks("T生産計画から必要な情報抜き取り資料.xlsx")
Set ws = wb.Worksheets(1)
'MsgBox ws.Name + "を取得しました。"
i = ws.Cells(Rows.Count, 1).End(xlUp).Row 'T生産計画から必要な情報抜き取り資料の最終行取得
'MsgBox "最終行:" & i
Set SearchRange = ws.Range(ws.Cells(3, 1), ws.Cells(i, 11))
For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row
'On Error Resume Next
Cells(j, "F") = WorksheetFunction.VLookup(Cells(j, "C"), SearchRange, 3, False)

Next
End Sub

ソースコード
Cells(j, "F") = WorksheetFunction.VLookup(Cells(j, "C"), SearchRange, 3, False)
現状では 上記の vlookupでエラーが出てしまいます

試したこと

変数のSearchRangeを使わず=のあとにある直接範囲指定をやってみましたが
状況は変わりませんでした

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

とりあえず、シート名を省略せず書いてみて様子を見るのはどうでしょう。

VBA

1Sub 発注管理表単価取り込み2() 2 3 Dim j As Long 4 Dim i As Long 5 Dim SearchRange As Range 6 Dim wb As Workbook 7 Dim ws As Worksheet 8 9 Dim mySheet As Worksheet 10 Set mySheet = ActiveSheet 11 12 mySheet.Columns("F").Insert ' F 列に挿入 13 mySheet.Range("F1") = "単価2" 14 15 Set wb = Workbooks.Open(Filename:="C:****\T生産計画から必要な情報抜き取り資料.xlsx") 16 Set ws = wb.Worksheets(1) 17 'MsgBox ws.Name + "を取得しました。" 18 i = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row 'T生産計画から必要な情報抜き取り資料の最終行取得 19 'MsgBox "最終行:" & i 20 Set SearchRange = ws.Range(ws.Cells(3, 1), ws.Cells(i, 11)) 21 For j = 2 To mySheet.Cells(mySheet.Rows.Count, 1).End(xlUp).Row 22 'On Error Resume Next 23 mySheet.Cells(j, "F") = WorksheetFunction.VLookup(mySheet.Cells(j, "C"), SearchRange, 3, False) 24 Next 25End Sub 26

投稿2021/08/10 10:54

jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TARA91PS254

2021/08/11 01:35

jinoji様 この度は早々のご回答ありがとうございました。 ご指摘箇所を見直したところ、無事に動きました 本当に助かりました また、何かありましたらよろしくお願いいたします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問