問題の文
Cells(i + 8, j + 3).Value "=VLOOKUP(B" & i & ",'" & Worksh & "'!$A$1:$M$" & Row & ",5 + " & f & ",FALSE)"
Workshがなんなのか突然聞かれても、他人は解りません。
まぁ、なんとなくワークシートが代入されているだろうと想像は付くわけですが、
「本当に」ワークシートがちゃんと代入されているか、
回答側では確認不可能です。
で、エラーメッセージは、「ずばり」の指摘をしてくれません。
なので、エラーメッセージを参考に当たりを付けてデバッグしていくわけですが、
やはり、1行1行精査していくことになりますので、
全文を掲載(あるいは動作確認可能なコード)を掲載したほうがよいでしょう。
ここで注目するのは、
「オブジェクトは、」です。
原因はこれなので、この行の中でオブジェクト(≒操作の対象になっているもの)を探して、
文法に間違いがないか確認します。
この行でオブジェクトが登場している箇所は、
Cells(i + 8, j + 3) と
Worksh ですよね?
Cellsの方は、iとjの値をローカルウィンドウでチェックし、
シート上に存在しないセルを示すようになってないか確認します。
あと、Valueの綴りが間違ってないかも確認します。(一見大丈夫そうです。)
つぎに、Workshですが、これはシートそのもの(オブジェクト)が入ってます。
Worksheetというものは、名前だけで存在してません。
セルであったり、名前であったり、たくさんの要素で形作られた物が、「ワークシート」という存在に
なります。
ここで、いま、
数式の中(エクセル君が数式と認識する文字列)シート名を使ってシートを指定したいのですから、
「ワークシート」という存在のなかの「シート名」を利用したいのですから、
Worksh.Name と、
オブジェクトのさまざまな要素の中から、シートの名前を取り出すよう指示してやる必要がありそうです。
ただし、セルそのものは、必ずどこかのシートに属してますから、
セルの中から、「どのシートのどのセルか」という情報を引き出してやればOKです。
時間がないのでこの辺で。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。