- ベストアンサー
VBA 実行時エラー1004(その2)
毎度お世話になっております。 シート「sheet2」のA列のリスト内容を、シート「M_得意先」のリストからVLOOKUPして、指定のセルに書き出していくというコードを作成してみたのですが、VLOOKUPを実行する段階でエラーが出てしまいます。 少し変更して、同一シート内でのVLOOKUPは問題なく実行できたのですが...原因をご存知の方教えてください。 Dim b As String Dim endRcell2 As Long Dim cnt10 As long Sheets("sheet2").Select Sheets("sheet2").Range("A1").CurrentRegion.Select 'データ全体選択 Selection.SpecialCells(xlCellTypeLastCell).Select '最終行検出 endRcell2 = ActiveCell.Row cnt10 = 2 Do ↓実行時エラー1004が出る行 b = Application.WorksheetFunction.VLookup(Sheets("Sheet2").Range("A" & cnt10).Value, Sheets("M_得意先").Range(Cells(1, 1), Cells(endRcell, 2)), 2, False) ↑実行時エラー1004が出る行 Sheets("sheet2").Range("E" & cnt10).Value = b cnt10 = cnt10 + 1 Loop Until cnt10 = endRcell2
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
前回の「VBA 実行時エラー1004(質問番号:5359282)」に関して、きちんと対応してください。何もコメントも付けずに、そのまま閉めるというのは、マナー違反です。私の指摘(#5)のDo ~Loop など、間違いなかったようですが、その指摘に対して、何も反映されていません。質問するときには、誠意を持って対応してください。あのままで、解決するはずがありません。回答者のメッセージをきちんと読んだらいかがですか? 今回の「実行時エラー1004が出る行」の行のコードをきちんと書けるには、もう少しレベルを上げないと難しいのです。ワークシート関数で、エラーを返す関数は、エラートラップ等を設けないと使えません。 VLookup の >Sheets("M_得意先").Range(Cells(1, 1), Cells(endRcell, 2)) で、endRcellでは、いきなり定義していない変数が出てきています。これは何ですか? それに、Sheet2 をSelect しておいて、M_得意先シートのRangeのくくりの中のCells の親シートの整合性が合っていません。エラーが変えるはずです。 それに、Do ~Loop よりも、For ~ Next のほうが良いというのは、前回書いたとおりです。もし、そうなら、cnt10=2 という設定も必要ありません。
その他の回答 (4)
- hallo-2007
- ベストアンサー率41% (888/2115)
Sheets("M_得意先").Range(Cells(1, 1), Cells(endRcell, 2)) もちろん、セルの範囲を指定するのRangeとCellsを組み合わせて指定することも出来ますが この場合 Sheets("M_得意先").Range("A1:B" & endRcell) といった記述の仕方も出来ると思います。
- n-jun
- ベストアンサー率33% (959/2873)
変数:endRcellに値はあるんですよね? b = Application.WorksheetFunction.VLookup(Sheets("Sheet2").Range("A" & cnt10).Value, Sheets("M_得意先").Range("A1:B" & endRcell), 2, False) とかでも? ⇒テストしてないので自信はありませんが。
- kozimaya
- ベストアンサー率33% (6/18)
Sheets("M_得意先").Range(Cells(1, 1), Cells(endRcell, 2)) を Sheets("M_得意先").Range(Sheets("M_得意先").Cells(1, 1), Sheets("M_得意先").Cells(endRcell, 2)) としてみてください。
- tag1701
- ベストアンサー率54% (67/123)
あくまで参考です。 シート間でのやり取りの場合、アクティブなシートの明示が 不明瞭な場合に起きると下記リンクで記述されておりました。 参照してみてください。 http://ziddy.japan.zdnet.com/qa4762520.html
お礼
大変失礼致しました。締め切った質問は全て頂いたアドバイスによって解決したものです。コメントを残すべきでした。ありがとうございます