Per evitare loop e sfruttare la velocità di esecuzione quasi istantanea, è possibile utilizzare il metodo Excel.WorksheetFunction.CountA
, che restituisce lo stesso risultato della funzione del foglio di lavoro = CONTA.VALORI().
Supponendo che il vostro riferimento Excel.Application si chiama 'excelApp' e il vostro riferimento Excel.Worksheet si chiama 'foglio', è possibile utilizzare il codice simile al seguente in C# 4.0:
// C# 4.0
int dataCount = (int)excelApp.WorksheetFunction.CountA(worksheet.Cells);
if (dataCount == 0)
{
// All cells on the worksheet are empty.
}
else
{
// There is at least one cell on the worksheet that has non-empty contents.
}
In C# 3.0 e qui di seguito, è un po 'più prolisso, perché è necessario fornire esplicitamente gli argomenti opzionali mancanti:
// C# 3.0 and below
int dataCount = (int)excelApp.WorksheetFunction.CountA(
worksheet.Cells,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
if (dataCount == 0)
{
// All cells on the worksheet are empty.
}
else
{
// There is at least one cell on the worksheet that has non-empty contents.
}
penso che questo dovrebbe farlo per voi!
Mike
So che questo è vecchio, ma in aggiunta alle risposte spegnere questi eventi, compilare foglio di lavoro, poi girare di nuovo su: 'currentInstance.EnableEvents = false/true; currentInstance.ScreenUpdating = false/true; ' –