如何以编程方式在Excel中分组(移位select)工作表

本主题涉及: Excel中的多个选定工作表是什么对象types?

为了给出一个问题的概述,我运行了一些代码,改变了我在Excel中的select,我想将select返回到原来的状态(我称之为“originalSelection”)。 在大多数情况下,您可以调用originalSelection上的Select()方法。

var originalSelection = ExcelApp.Selection; originalSelection.GetType().InvokeMember("Select", System.Reflection.BindingFlags.InvokeMethod, null, originalSelection , null); 

select多个工作表时,selecttypes始终是一个范围(这是Excel默认的)。 但是,如果select了多个工作表,则在尝试再次调用Select时可能会遇到错误。 你需要做一些跳舞,让事情发挥作用。

如果select了多个工作表,但不是所有工作表,则可以执行以下操作:

 selectedSheets.Select(); activeSheet.Activate(); originalSelection.Select(); //this was casted to an Excel.Range 

但是,如果select了所有图纸,则activeSheet.Activate()行将取消select所有其他选定的图纸。 如果您使用用户界面进行本地尝试,也会发生这种情况。

我想知道是否有办法通过代码逐一模拟转换select表单? 我发现最近的东西是与范围分组的东西,但没有任何工作表。

我试图保持我的概述简要,但如果你需要更多的澄清我在做什么,只是问。

所以我想通过编程的方式select工作表。

您可以创build一个名称的string数组,并使用数组的sorting来获取表单的集合。 select这个集合,你应该select所有指定的图纸。

 String[] sheetsToBeSelected = {"Sheet3","Sheet1","Sheet2"}; //Note, Sheet3 is the first item in this array excel.Workbook workbook = ExcelApp.ActiveWorkbook; //get your Excel application however you want excel.Sheets worksheets = workbook.Worksheets; //get all the sheets in this workbook //This gets a collection of the sheets specified and ordered by the array of names passed in. //Just call select on this collection, and the first sheet in the collection becomes the active sheet! ((excel.Sheets)worksheets.get_Item(sheetsToBeSelected)).Select();