public AST.COMRef makeInputVectorCOMRef(AST.Range rng) { // check for the range in the dictionary AST.COMRef c; if (!_all_vectors.TryGetValue(rng, out c)) { // otherwise, create and cache it Excel.Range com = rng.GetCOMObject(_app); Excel.Worksheet ws = com.Worksheet; Excel.Workbook wb = ws.Parent; string wsname = ws.Name; string wbname = wb.Name; var path = new Microsoft.FSharp.Core.FSharpOption<string>(wb.Path); int width = com.Columns.Count; int height = com.Rows.Count; c = new AST.COMRef(rng.getUniqueID(), wb, ws, com, path, wbname, wsname, Microsoft.FSharp.Core.FSharpOption<string>.None, width, height); _all_vectors.Add(rng, c); _do_not_perturb.Add(rng, true); // initially mark as not perturbable } return c; }
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(); }