/// <summary> /// Handler per il click su celle di selezione. /// </summary> /// <param name="Sh"></param> /// <param name="Target"></param> public static void SelectionClick(object Sh, Excel.Range Target) { DefinedNames definedNames = new DefinedNames(Target.Worksheet.Name, DefinedNames.InitType.Selection); Range rng = new Range(Target.Row, Target.Column); Selection sel; int val; if (definedNames.HasSelections() && definedNames.TryGetSelectionByPeer(rng, out sel, out val)) { Target.Worksheet.Unprotect(Workbook.Password); if (sel != null) { Workbook.ScreenUpdating = false; //evito di annotare il cambiamento della cella di selezione: non ha senso e cmq va in errore perché il simbolo non viene riconosciuto if (Simboli.ModificaDati) { //Workbook.WB.SheetChange -= StoreEdit; Workbook.RemoveStdStoreEdit(); } sel.ClearSelections(Target.Worksheet); sel.Select(Target.Worksheet, rng.ToString()); //annoto modifiche e le salvo sul DB //Workbook.WB.SheetChange += StoreEdit; Workbook.AddStdStoreEdit(); Target.Worksheet.Range[sel.RifAddress].Value = val; //se non ero in modifica tolgo l'handler alla modifica delle celle if (!Simboli.ModificaDati) { //Workbook.WB.SheetChange -= StoreEdit; Workbook.RemoveStdStoreEdit(); } DataBase.SalvaModificheDB(); Workbook.ScreenUpdating = true; } Target.Worksheet.Protect(Workbook.Password); } }