Dim 検索する値 As Range, 検索する範囲 As Range Dim 検索結果1 As String, 検索結果2 As String, 検索結果3 As String, 検索結果4 As String Dim データベースシート As Worksheet
Set データベースシート = Worksheets("BrooksItemDatabase") Set 検索する値 = Range("A" & i * 5 + 12).Value Set 検索する範囲 = Range(データベースシート.Range("A2"), データベースシート.Range("G700"))
ゲストさんの投稿
(投稿ID: 3112) 添付ファイルのダウンロード権限がありません
マクロでプログラムする場合、"Set 検索する値 = Range("A" & i * 5 + 12).Value"の行で"オブジェクトが必要
です”のエラーメッセージがでました。
何が問題か教えてください。
sub プログラム
=======================================
Sub InvoiceUK転記()
Dim i As Integer
Dim 最終行 As Integer
最終行 = Worksheets("出荷一覧UK").Range("A1").End(xlDown).Row
For i = 3 To 最終行
With Worksheets("Invoice UK")
.Range("A" & i * 5 + 11).Value = Worksheets("出荷一覧UK").Range("A" & i).Value
.Range("A" & i * 5 + 12).Value = Worksheets("出荷一覧UK").Range("B" & i).Value
製品名 = .Range("A" & i * 5 + 12).Value
.Range("F" & i * 5 + 12).Value = Worksheets("出荷一覧UK").Range("C" & i).Value
抽出
End With
Next
End Sub
Sub 抽出()
Dim 検索する値 As Range, 検索する範囲 As Range
Dim 検索結果1 As String, 検索結果2 As String, 検索結果3 As String, 検索結果4 As String
Dim データベースシート As Worksheet
Set データベースシート = Worksheets("BrooksItemDatabase")
Set 検索する値 = Range("A" & i * 5 + 12).Value
Set 検索する範囲 = Range(データベースシート.Range("A2"), データベースシート.Range("G700"))
検索結果1 = Application.WorksheetFunction.VLookup(検索する値, 検査する範囲, 5, False)
検索結果2 = Application.WorksheetFunction.VLookup(検索する値, 検査する範囲, 7, False)
検索結果3 = Application.WorksheetFunction.VLookup(検索する値, 検査する範囲, 6, False)
検索結果4 = Application.WorksheetFunction.VLookup(検索する値, 検査する範囲, 3, False)
Worksheets("Invoice UK").Range("A" & i * 5 + 13).Value = 検索結果1
Worksheets("Invoice UK").Range("A" & i * 5 + 14).Value = 検索結果1
Worksheets("Invoice UK").Range("E" & i * 5 + 12).Value = 検索結果1
Worksheets("Invoice UK").Range("H" & i * 5 + 12).Value = 検索結果1
End Sub
ガラパゴスタディー事務局さんのコメント
(コメントID: 4557)
大変恐縮ですが、講義内容に関しての質問は
質問感想フォームより受け付けております。
例えば、「エクセル画面でメニューを選択できない場合の対処法」
に関してご質問がある場合、動画画面を下にスクロールしていただくと、
【動画2】 エクセル画面でメニューを選択できない場合の対処法
- 5分35秒 質問感想フォーム
https://forum.pc5bai.com/lesson/page/31
がございますので、こちらよりご質問ください。
お手数をおかけしますが、どうぞよろしくお願いいたします。
ガラパゴスタディー事務局
> ゲストさん
>
> 下記 subプログラムのsub 転記()の中でVlookup関数を
> マクロでプログラムする場合、"Set 検索する値 = Range("A" & i * 5 + 12).Value"の行で"オブジェクトが必要
> です”のエラーメッセージがでました。
> 何が問題か教えてください。
>
> sub プログラム
> =======================================
> Sub InvoiceUK転記()
>
>
> Dim i As Integer
> Dim 最終行 As Integer
>
>
> 最終行 = Worksheets("出荷一覧UK").Range("A1").End(xlDown).Row
>
>
> For i = 3 To 最終行
>
>
> With Worksheets("Invoice UK")
>
>
>
> .Range("A" & i * 5 + 11).Value = Worksheets("出荷一覧UK").Range("A" & i).Value
> .Range("A" & i * 5 + 12).Value = Worksheets("出荷一覧UK").Range("B" & i).Value
> 製品名 = .Range("A" & i * 5 + 12).Value
> .Range("F" & i * 5 + 12).Value = Worksheets("出荷一覧UK").Range("C" & i).Value
>
> 抽出
>
>
> End With
>
>
>
> Next
>
> End Sub
>
> Sub 抽出()
>
>
>
> Dim 検索する値 As Range, 検索する範囲 As Range
> Dim 検索結果1 As String, 検索結果2 As String, 検索結果3 As String, 検索結果4 As String
> Dim データベースシート As Worksheet
>
> Set データベースシート = Worksheets("BrooksItemDatabase")
> Set 検索する値 = Range("A" & i * 5 + 12).Value
> Set 検索する範囲 = Range(データベースシート.Range("A2"), データベースシート.Range("G700"))
>
> 検索結果1 = Application.WorksheetFunction.VLookup(検索する値, 検査する範囲, 5, False)
> 検索結果2 = Application.WorksheetFunction.VLookup(検索する値, 検査する範囲, 7, False)
> 検索結果3 = Application.WorksheetFunction.VLookup(検索する値, 検査する範囲, 6, False)
> 検索結果4 = Application.WorksheetFunction.VLookup(検索する値, 検査する範囲, 3, False)
>
> Worksheets("Invoice UK").Range("A" & i * 5 + 13).Value = 検索結果1
> Worksheets("Invoice UK").Range("A" & i * 5 + 14).Value = 検索結果1
> Worksheets("Invoice UK").Range("E" & i * 5 + 12).Value = 検索結果1
> Worksheets("Invoice UK").Range("H" & i * 5 + 12).Value = 検索結果1
>
>
>
> End Sub
>
小川慶一さんのコメント
(コメントID: 4559)
> Vlookup関数をマクロでプログラムする場合
[[中略]]
> 何が問題か教えてください。
「vbaからvlookup関数を呼び出す」という設計方針自体が問題です。
基礎編の演習動画13「複数の表の間でのマッチング。VLookUp関数がやっていることをマクロで書くと?」等を参考にして設計から見直してください。
https://forum.pc5bai.com/lesson/course/27
もっとも、いきなり上記の演習から取り組んでも理解できないかもしれません。
その場合は、基礎編の本編からしっかり学んでください。
https://forum.pc5bai.com/lesson/course/25
基礎編も難しいという場合は、さらにその下の「導入編」から。
https://forum.pc5bai.com/lesson/course/10
もっとも、起きている問題は、「Vlookup関数をマクロでプログラムする場合」についての話ではありません。
> Dim 検索する値 As Range
> Set 検索する値 = Range("A" & i * 5 + 12).Value
Set構文の戻り値は値でなくオブジェクトです。
.Value を除けばこのエラーは回避できるでしょう。
いろいろ見ましたが、他にも抑えるべき基本ポイントがたくさんあります。
やはり基礎編をしっかり学ぶことをお勧めします。
> ゲストさん
>
> 下記 subプログラムのsub 転記()の中でVlookup関数を
> マクロでプログラムする場合、"Set 検索する値 = Range("A" & i * 5 + 12).Value"の行で"オブジェクトが必要
> です”のエラーメッセージがでました。
> 何が問題か教えてください。
>
> sub プログラム
> =======================================
> Sub InvoiceUK転記()
>
>
> Dim i As Integer
> Dim 最終行 As Integer
>
>
> 最終行 = Worksheets("出荷一覧UK").Range("A1").End(xlDown).Row
>
>
> For i = 3 To 最終行
>
>
> With Worksheets("Invoice UK")
>
>
>
> .Range("A" & i * 5 + 11).Value = Worksheets("出荷一覧UK").Range("A" & i).Value
> .Range("A" & i * 5 + 12).Value = Worksheets("出荷一覧UK").Range("B" & i).Value
> 製品名 = .Range("A" & i * 5 + 12).Value
> .Range("F" & i * 5 + 12).Value = Worksheets("出荷一覧UK").Range("C" & i).Value
>
> 抽出
>
>
> End With
>
>
>
> Next
>
> End Sub
>
> Sub 抽出()
>
>
>
> Dim 検索する値 As Range, 検索する範囲 As Range
> Dim 検索結果1 As String, 検索結果2 As String, 検索結果3 As String, 検索結果4 As String
> Dim データベースシート As Worksheet
>
> Set データベースシート = Worksheets("BrooksItemDatabase")
> Set 検索する値 = Range("A" & i * 5 + 12).Value
> Set 検索する範囲 = Range(データベースシート.Range("A2"), データベースシート.Range("G700"))
>
> 検索結果1 = Application.WorksheetFunction.VLookup(検索する値, 検査する範囲, 5, False)
> 検索結果2 = Application.WorksheetFunction.VLookup(検索する値, 検査する範囲, 7, False)
> 検索結果3 = Application.WorksheetFunction.VLookup(検索する値, 検査する範囲, 6, False)
> 検索結果4 = Application.WorksheetFunction.VLookup(検索する値, 検査する範囲, 3, False)
>
> Worksheets("Invoice UK").Range("A" & i * 5 + 13).Value = 検索結果1
> Worksheets("Invoice UK").Range("A" & i * 5 + 14).Value = 検索結果1
> Worksheets("Invoice UK").Range("E" & i * 5 + 12).Value = 検索結果1
> Worksheets("Invoice UK").Range("H" & i * 5 + 12).Value = 検索結果1
>
>
>
> End Sub
>