Robert nota che in un campo data Quicken, se preme il tasto più o meno, la data aumenta o diminuisce di un giorno. Vorrebbe creare questo stesso tipo di effetto in Excel.

Questo è un problema più difficile da affrontare di quanto si possa supporre, in particolare in Excel. Poiché è necessario eseguire un’azione alla pressione di un tasto particolare (in questo caso, i tasti più o meno), si presume naturalmente che possa essere utilizzato il metodo OnKey. Considera i seguenti esempi:

Sub Start_OnKey()

Application.OnKey "{+}", "Plus1"

Application.OnKey "-", "Minus1"

End Sub
Sub End_OnKey()

Application.OnKey "{+}"

Application.OnKey "-"

End Sub
Sub Plus1()

If IsDate(ActiveCell) And Not ActiveCell.HasFormula Then         ActiveCell.Value = ActiveCell.Value + 1     End If End Sub
Sub Minus1()

If IsDate(ActiveCell) And Not ActiveCell.HasFormula Then         ActiveCell.Value = ActiveCell.Value - 1     End If End Sub

Secondo tutta la documentazione VBA, quanto sopra dovrebbe funzionare perfettamente, una volta eseguita la macro Start_OnKey. Ogni volta che si preme un tasto più o meno, viene eseguita la procedura appropriata per incrementare o diminuire la data. Il problema è che non funzionerà su alcune versioni di Excel. Perché? Perché il tasto più, quando viene premuto, apparentemente mette alcune versioni di Excel in una speciale modalità di “immissione di formule” che ignora il normale buffer di tastiera utilizzato da OnKey. Quindi, mentre si preme il tasto meno mentre è selezionata una cella contenente una data si ottiene il risultato desiderato, premendo il tasto più non si ottiene.

Per quelle versioni di Excel in cui il tasto più è un problema, l’unica soluzione è cambiare le sequenze di tasti in qualcos’altro. Ad esempio, potresti cambiare la pressione dei tasti in modo che Ctrl + u sia usato per incrementare la data e Ctrl + d sia usato per decrementare la data:

Sub Start_OnKey()

Application.OnKey "^u", "Plus1"

Application.OnKey "^d", "Minus1"

End Sub
Sub End_OnKey()

Application.OnKey "^u"

Application.OnKey "^d"

End Sub

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (7197) si applica a Microsoft Excel 97, 2000, 2002 e 2003.