Accettazione di una sola cifra (Microsoft Excel)
Rich si chiede come possa configurare Excel in modo che quando inserisce una singola cifra passi automaticamente alla cella successiva. Vuole eliminare di premere Invio o Tab per passare alla cella successiva. Il valore della voce per un intervallo di celle sarà sempre una singola cifra positiva.
Questa operazione non può essere eseguita con alcuna impostazione di configurazione nativa in Excel.
Invece, dovrai creare una macro che gestirà la voce per te. Una scelta naturale per la macro consiste nell’utilizzare l’evento Change per il foglio di lavoro, in modo che ogni volta che un valore viene immesso in una cella, la voce viene “separata” e inserita nelle celle della riga.
Private Sub Worksheet_Change(ByVal Target As Range) If IsNumeric(Target.Value) Then CRow = Target.Row CColumn = Target.Column - 1 Entry = Target.Value For i = 1 To Len(Entry) Cells(CRow, CColumn + i).Value = Mid(Entry, i, 1) Next End If End Sub
Questa macro verifica innanzitutto se ciò che è stato immesso è numerico. In caso affermativo, le cifre vengono estratte dal valore e inserite in celle consecutive nella riga.
Lo svantaggio di una tale macro, ovviamente, è che devi ancora premere Invio per attivare l’evento. Se vuoi evitare di premere completamente Invio, dovrai fare affidamento su un approccio diverso.
Questa tecnica si basa sulla funzione OnKey per assegnare macro a combinazioni di tasti specifiche. Inserisci il codice seguente in un modulo macro standard.
Sub Assigns() Dim i As Variant With Application For i = 0 To 9 .OnKey i, "dig" & i Next End With End Sub
Sub ClearAssigns() Dim i As Variant With Application For i = 0 To 9 .OnKey i Next End With End Sub
Sub dig0() ActiveCell.Value = 0 ActiveCell.Offset(1, 0).Select End Sub
Sub dig1() ActiveCell.Value = 1 ActiveCell.Offset(1, 0).Select End Sub
Sub dig2() ActiveCell.Value = 2 ActiveCell.Offset(1, 0).Select End Sub
Sub dig3() ActiveCell.Value = 3 ActiveCell.Offset(1, 0).Select End Sub
Sub dig4() ActiveCell.Value = 4 ActiveCell.Offset(1, 0).Select End Sub
Sub dig5() ActiveCell.Value = 5 ActiveCell.Offset(1, 0).Select End Sub
Sub dig6() ActiveCell.Value = 6 ActiveCell.Offset(1, 0).Select End Sub
Sub dig7() ActiveCell.Value = 7 ActiveCell.Offset(1, 0).Select End Sub
Sub dig8() ActiveCell.Value = 8 ActiveCell.Offset(1, 0).Select End Sub
Sub dig9() ActiveCell.Value = 9 ActiveCell.Offset(1, 0).Select End Sub
Per avviare la macro, eseguire la macro Assigns. Successivamente, ogni volta che viene digitata una cifra, la cifra viene inserita nella cella corrente e viene selezionata la cella successiva a destra. Se digiti del testo, non accade nulla.
(Ovviamente, se provi a inserire un valore misto, come B2B, quando premi “2” questo è ciò che finirà nella cella.) Quando hai finito con questo tipo di immissione dati, esegui la macro ClearAssigns per finire.
_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 (12276) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.
Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: