hiroton
2023/07/20 (木) 17:24:08
14585@f966d
Excelでなら動く
Range(Cells(21 + i, 1), Cells(21 + i + j, 1)).EntireRow.Insert
を、なんやかんやして
xls.Range(xls.Cells(21 + i, 1), xls.Cells(21 + i + j, 1)).EntireRow.Insert
とした場合、このコード部分だけなら動作させることは可能です
つまり、このコードが動くための準備がうまく出来ていません
xls
はSet xls = CreateObject("Excel.application")
としていますので、EXCELそのものを示します
Application.Range プロパティ (Excel)
アクティブ シートがワークシートでない場合、このプロパティは失敗します。
Application.Cells プロパティ (Excel)
作業中の文書がワークシートでない場合、このプロパティは無効になります。
いつもの難しいMicrosoft記述ですが、つまり、「ユーザーが操作できる状態じゃないとエラーになるよ」「ユーザーが操作できる状態のモノが対象になるよ」ということです
解決策としては、「操作したいシートをアクティブにする」か、「アクティブでないRange/Cellsを対象にする記述をする」のどちらかです。とはいえ、実際に使っているExcel上でマクロを動かすならともかく、「アクティブな状態」というあやふやな状態を対象とする記述はできる限りやらないほうが無難です
通報 ...