このトピックは次の関連事項です。Excelで複数選択されたシートはどのオブジェクトタイプですか。
問題の概要を説明するために、Excelでの選択を変更するコードを実行し、選択を元の状態に戻したいと思います(これを「originalSelection」と呼びます)。ほとんどの場合、originalSelectionでSelect()メソッドを呼び出すことができます。
var originalSelection = ExcelApp.Selection;
originalSelection.GetType().InvokeMember("Select", System.Reflection.BindingFlags.InvokeMethod, null, originalSelection , null);
複数のシートが選択されている場合、選択タイプは常に範囲になります(Excelのデフォルト設定です)。ただし、複数のシートを選択している場合、Selectを再度呼び出そうとするとエラーが発生する可能性があります。物事を機能させるには、ダンスをする必要があります。
複数のシートが選択されているが、すべてのシートが選択されていない場合は、次の操作を実行できます。
selectedSheets.Select();
activeSheet.Activate();
originalSelection.Select(); //this was casted to an Excel.Range
ただし、すべてのシートが選択されている場合、そのactiveSheet.Activate()
行は選択されている他のすべてのシートの選択を解除します。これは、UIを使用してネイティブに試してみた場合にも発生します。
コードを介してシフト選択シートを1枚ずつ実用的に模倣する方法があるかどうか疑問に思いました。私が見つけた最も近いものは、範囲のグループ化を伴うものですが、シートには何もありません。
概要を簡潔にしようとしましたが、私が行っていることについてさらに明確にする必要がある場合は、質問してください。