private void activateAndCenterOn(AST.Address cell, Excel.Application app) { // go to worksheet RibbonHelper.GetWorksheetByName(cell.A1Worksheet(), _workbook.Worksheets).Activate(); // COM object var comobj = ParcelCOMShim.Address.GetCOMObject(cell, app); // if the sheet is hidden, unhide it if (comobj.Worksheet.Visible != Excel.XlSheetVisibility.xlSheetVisible) { comobj.Worksheet.Visible = Excel.XlSheetVisibility.xlSheetVisible; } // if the cell's row is hidden, unhide it if ((bool)comobj.Rows.Hidden) { comobj.Rows.Hidden = false; } // if the cell's column is hidden, unhide it if ((bool)comobj.Columns.Hidden) { comobj.Columns.Hidden = false; } // ensure that the cell is wide enough that we can actually see it widenIfNecessary(comobj, app); // make sure that the printable area is big enough to show the cell; // don't change the printable area if the used range is a single cell int ur_width = comobj.Worksheet.UsedRange.Columns.Count; int ur_height = comobj.Worksheet.UsedRange.Rows.Count; if (ur_width != 1 || ur_height != 1) { comobj.Worksheet.PageSetup.PrintArea = comobj.Worksheet.UsedRange.Address; } // center screen on cell var visible_columns = app.ActiveWindow.VisibleRange.Columns.Count; var visible_rows = app.ActiveWindow.VisibleRange.Rows.Count; app.Goto(comobj, true); app.ActiveWindow.SmallScroll(Type.Missing, visible_rows / 2, Type.Missing, visible_columns / 2); // select highlighted cell // center on highlighted cell comobj.Select(); }
private void ActivateAndCenterOn(AST.Address cell, Excel.Application app) { // go to worksheet RibbonHelper.GetWorksheetByName(cell.A1Worksheet(), _workbook.Worksheets).Activate(); // COM object var comobj = cell.GetCOMObject(app); // center screen on cell var visible_columns = app.ActiveWindow.VisibleRange.Columns.Count; var visible_rows = app.ActiveWindow.VisibleRange.Rows.Count; app.Goto(comobj, true); app.ActiveWindow.SmallScroll(Type.Missing, visible_rows / 2, Type.Missing, visible_columns / 2); // select highlighted cell // center on highlighted cell comobj.Select(); }