• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA VLOOKUPとセルのコピーができません)

VBA VLOOKUPとセルのコピーができません

このQ&Aのポイント
  • VBA VLOOKUPを使用してセルのコピーを行いたいが、うまくいかない
  • Sheet3の4列目の数値をSheet1のG列で照合し、Sheet1の9列目に持ってくることをしたい
  • コピーを実行すると「アプリケーション定義またはオブジェクト定義のエラーです。」というエラーが発生する

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

エラー行に2個あるRange()が不要です。 Range(Cells(6, 9)).Copy Destination:=Sheets(1).Range(Cells(7, 9)) →Cells(6, 9).Copy Destination:=Sheets(1).Cells(7, 9) Range(Cells(6, 9))だと、Cells(6, 9).Valueが表すアドレスを参照してしまう。 たとえば Cells(6, 9) に "B1" と書かれていたら、Range(Cells(6, 9)) は Range("B1") のことになる。 で、Cells(6, 9) が空欄なら Range("") みたいなことになって参照できないのでエラー。

t2grp
質問者

お礼

すみません 自己解決しました R1C1形式でも絶対列の設定ができました ActiveCell.FormulaR1C1 = "=VLOOKUP(RC7,'在庫を貼付'!C3:C6,4,FALSE)" c[-6]:c[-3]→c3:c6と変更 F4を押して選ぶのは、関数の時と一緒ですね (関数で言うとC列→$C列) これで参照先が継承されました 昨日からずっと悩んでたのが解決して嬉しいです ありがとうございました

t2grp
質問者

補足

即レスありがとうございます! ご指摘のようにRange()を外すとエラーが起きなくなりました ただしVLOOKUPの式の入ったセルが、cells(1,1)にあってこれをcells(6,9)にコピーすると#REF!エラーとなり、参照先の列が消えてしまって上手く動いてません R1C1形式でないVLOOKUPの設定はどうやるか教えて頂けますか? ※条件を書くのを忘れてました OS:Windows7 Home Premium(64bit) Ver:Excel2013(32bit)

その他の回答 (1)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

Range(Cells(6, 9)) この書き方が良くないです。 Range(Cells(6, 9)).Copy Destination:=Sheets(1).Range(Cells(7, 9)) 'この行でエラーが出る ↓ Cells(6, 9).Copy Destination:=Worksheets(1).Cells(7, 9) と、書き換えてみて下さい。 2000行までコピーしたいなら Cells(6, 9).Copy Destination:=Worksheets(1).Range(Cells(7, 9), Cells(2000, 9)) です。

t2grp
質問者

お礼

すみません 自己解決しました R1C1形式でも絶対列が指定できることが分かりました (詳細はNo.1さんのお礼欄に記載してます) これで式を2000行までコピーして使えます ありがとうございまいた

t2grp
質問者

補足

すばやいレスありがとうございます ご指摘通り修正したら、コピーに関しては無事動くようになりました(2000行まで実行してます) ただNo.1の方にも質問しましたが、VLOOKUPの式がcells(1,1)にあり、コピーでcells(7,9)からcells(2000,9)に持ってくると参照元のセル情報が消えているため#REF!エラーとなります (関数で言えば=VLOOKUP($G7,'在庫を貼付'!#REF!,4,FALSE)のようになります) VLOOKUPの式をcells(6,9)に設定するか、R1C1形式で設定できるのか教えてもらえますか? ※条件を書くのを忘れてました OS:Windows7 Home Premium(64bit) Ver:Excel2013(32bit)

関連するQ&A

専門家に質問してみよう