Come sapere se l'applicazione Excel è in modalità modifica cella?
-
03-07-2019 - |
Domanda
Sto scrivendo un componente aggiuntivo di Excel usando COM Interop da .net. Ho un comando che fa apparire una finestra di dialogo e dalla finestra di dialogo faccio un po 'come raccogliere dati dall'intervallo usato di diversi fogli. Il problema è che se una cella è in modalità di modifica, alcune delle chiamate che devo effettuare genereranno eccezioni. Vorrei un modo per determinare in anticipo che Excel è in modalità di modifica, in modo da poter avvisare l'utente di completare prima la modifica della cella.
Qualche idea?
Soluzione
Esiste una proprietà Application.Ready che dovrebbe fornirti queste informazioni ma in pratica non funziona in modo affidabile. Vedi qui per un trucco.
Potresti anche voler guardare l'impostazione di Application.Interactive = false mentre il tuo codice .net sta facendo le sue cose.
Altri suggerimenti
Prova questa funzione:
Function IsInEditMode(ByRef exapp As Excel.Application) As Boolean
If exapp.Interactive = False Then
Return False
Else
Try
exapp.Interactive = False
exapp.Interactive = True
Return False
Catch
Return True
End Try
End If
End Function
Non hai menzionato la lingua che stai utilizzando. La funzione di SZL è scritta in VB. Dal momento che sto usando C # ho dovuto convertirlo. Ha funzionato alla grande. Ecco il codice C # equivalente.
bool IsInEditMode(ref Microsoft.Office.Interop.Excel.Application exapp)
{
if (exapp.Interactive == false)
{
return false;
}
else
{
try
{
exapp.Interactive = false;
exapp.Interactive = true;
return false;
}
catch
{
return true;
}
}
}