質問: h.Offset(0, 1).Height End With End If Next End Sub ``` ・エクセルの保存場所:Desktop ・画像の保存場所:Desktop\banner ・画像のサイズはバラバラ ・品番のある列はE列(数字8桁、-が間に入る時もあります)、画像を表示させたい列はF列 ・Shhet5の「コードを表示」で出てきた個所に入れています (WorksheetとSelectionChangeとの表示があります) ・参考: 記事のものをコピペし、保存場所やシート名、セルの場所などの手を加えています。 ### 発生している問題・エラーメッセージ ``` For Each h In Sheet5.Range("E3:E" & Sheet5.Range("E1048576").End(xlUp).Row) の部分が黄色くなり、 ['Range'メソッドは失敗しました:'_worksheet'オブジェクト] と表示されます。 ``` 該当のエラーで調べてみてもSheetがアクティブになっていないのでは? といった事例が多く出てきたので、Rangeの前にシート名を 入れてみたりしたのですが解決にはなりませんでした。 これから勉強するつもりではいるのですが、正直初心者にはハードルが高すぎたなと感じております。 どうかご教示いただけないでしょうか。
回答: 動作の重さなどを気にしないのであれば、 そのコード自体には問題はなく、 当方の環境で新しく作ったブックのSheet5のE3からファイル名を入れ、 画像ファイルを用意し、そのコードを入れてやれば、 エラーが再現することなく動いております。 シートがアクティブかどうかは関係ないかと思います、試してみたところ、 シートがアクティブでなくとも実際に画像は貼り付けられませんがエラーも発生しませんでした。 その為、そのコードに問題があるのではなく、 現在テストに使用しているブック・シートに問題があるのではないかと予測されます。 新規ブックでの動作確認(問題の切り分け)は行いましたか? Sheet5.Range("E1048576").End(xlUp).Row の値はどうなっていますか? (イミディエイトウィンドウで " ? Sheet5.Range("E1048576").End(xlUp).Row " と入力) 実使用するブックでなにか問題があって最終行の検出がうまくいかない場合で、 どうしてもそのブックにこの機能を適用したい場合は 適当なセルに " =COUNTA(E:E) " を入れその値を使用する、 さらにその値を使用した上で Range の指定を Cells で行う、 ( Rangeの指定をCellsで行う例 " Range(Cells(1,1),Cells(i,j)) " ) などにより強引に回避できる場合もあります。 まずは問題の切り分けをお試しください。