Impostazione di un limite di lunghezza per le celle (Microsoft Excel)
Craig sta sviluppando un foglio di lavoro e vuole sapere se esiste un modo per specificare il numero massimo di caratteri che possono essere inseriti in una determinata cella. Non vuole utilizzare la convalida dei dati per imporre la limitazione.
Non c’è modo di farlo direttamente in Excel senza (come cita Craig)
utilizzando la convalida dei dati. Tuttavia, ci sono alcune cose che puoi provare per ottenere l’effetto desiderato. Innanzitutto, puoi utilizzare una formula per controllare la lunghezza di qualsiasi cella e quindi visualizzare un messaggio di errore, se lo desideri. Ad esempio, se le celle che vuoi controllare sono nella colonna C, potresti usare una formula come la seguente:
=IF((LEN(C1)>15),"Cell is Too Long","")
Posiziona la formula nella cella a destra della cella da controllare (come nella cella D1), quindi copiala tutte le celle necessarie.
Quando viene inserita una voce in C1 e se contiene più di 15 caratteri, viene visualizzato il messaggio.
Se un approccio così diretto non è desiderabile, sarà necessario utilizzare le macro per eseguire il controllo. Quello che segue è un semplice esempio che viene attivato ogni volta che viene modificato qualcosa nel foglio di lavoro. Ogni cella del foglio di lavoro viene quindi controllata per assicurarsi che non sia più lunga di 15 caratteri. Se viene rilevata una cella di questo tipo, viene visualizzata una finestra di messaggio e la cella viene cancellata.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) For Each cell In UsedRange If Len(cell.Value) > 15 Then MsgBox " Can't enter more than 15 characters" cell.Value = "" End If Next End Sub
Un approccio più robusto consiste nel controllare nel gestore eventi per vedere se la modifica è stata apportata da qualche parte all’interno di un intervallo di celle che devono essere limitate in lunghezza.
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Dim rCell As Range Dim iChars As Integer On Error GoTo ErrHandler 'Change these as desired iChars = 15 Set rng = Me.Range("A1:A10") If Not Intersect(Target, rng) Is Nothing Then Application.EnableEvents = False For Each rCell In Intersect(Target, rng) If Len(rCell.Value) > iChars Then rCell.Value = Left(rCell.Value, iChars) MsgBox rCell.Address & " has more than" _ & iChars & " characters." & vbCrLf _ & "It has been truncated." End If Next End If ExitHandler: Application.EnableEvents = True Set rCell = Nothing Set rng = Nothing Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub
Per utilizzare questa macro, è sufficiente modificare il valore assegnato a iChars (rappresenta la lunghezza massima consentita) e l’intervallo assegnato a rng (attualmente impostato su A1: A10). Poiché la macro controlla solo le modifiche all’interno dell’intervallo specificato, è molto più veloce con fogli di lavoro più grandi rispetto alla macro che controlla tutte le celle utilizzate.
_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 (10003) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: