Microsoft Access 掲示板

エクセル操作 Rangeと変数 / 3

17 コメント
views
4 フォロー
3
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

とした場合、このコード部分だけなら動作させることは可能です
つまり、このコードが動くための準備がうまく出来ていません


xlsSet xls = CreateObject("Excel.application")としていますので、EXCELそのものを示します
Application.Range プロパティ (Excel)

アクティブ シートがワークシートでない場合、このプロパティは失敗します。

Application.Cells プロパティ (Excel)

作業中の文書がワークシートでない場合、このプロパティは無効になります。

いつもの難しいMicrosoft記述ですが、つまり、「ユーザーが操作できる状態じゃないとエラーになるよ」「ユーザーが操作できる状態のモノが対象になるよ」ということです


解決策としては、「操作したいシートをアクティブにする」か、「アクティブでないRange/Cellsを対象にする記述をする」のどちらかです。とはいえ、実際に使っているExcel上でマクロを動かすならともかく、「アクティブな状態」というあやふやな状態を対象とする記述はできる限りやらないほうが無難です

通報 ...