質問: "=VLOOKUP(B13,'シート1'!$A$1:$M$5,5,FALSE)" のようにして、For文ネストを使用し、上記に関数の文章をセル内に入れたいと考えてます。 しかし、コード上で確かめてみると、 438エラー:オブジェクトは、このプロパティまたはメソッドをサポートしていません。 になります。 自分と構文の””や&、空白がはいっていて単純に間違っていると思っているのですが、変数にはいっているものが間違っていてもこの表示はでるのでしょうか? 宜しくお願いします。
回答: > > 問題の文 > > 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です。 時間がないのでこの辺で。