Impostare un limite di lunghezza su Celle

Craig sta sviluppando un foglio di lavoro e vuole sapere se c'è un modo per specificare il numero massimo di caratteri che possono essere inseriti in qualsiasi cella. Non vuole utilizzare Convalida dati per imporre la limitazione.

Non c'è modo di farlo direttamente in Excel, senza (come cita Craig) utilizzando Convalida dati. Ci sono alcune cose che si può provare a ottenere l'effetto desiderato, però. In primo luogo, è possibile utilizzare una formula per verificare la lunghezza di una cella, e quindi visualizzare un messaggio di errore, se lo si desidera. Ad esempio, se le celle che si desidera controllare sono nella colonna C, è possibile utilizzare una formula come la seguente:

= SE ((LEN (C1)> 15), "Cell è troppo lungo", "")

Posizionare la formula nella cella a destra della cella da controllare (ad esempio nella cella D1), e quindi copiare giù come molte cellule come necessario. Quando una voce è fatta in C1, e se è più di 15 caratteri, viene visualizzato il messaggio.

Se tale approccio diretto è indesiderabile, allora avrete bisogno di utilizzare le macro per fare il controllo. Quanto segue è un semplice esempio che viene attivata ogni volta che qualcosa è cambiato nel foglio di lavoro. Ogni cella del foglio viene poi controllata per assicurarsi che non è più lungo di 15 caratteri. Se tale cella è scoperto, poi una finestra di messaggio viene visualizzato e la cella è cancellata.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Per ogni cella UsedRange
Se Len (Cell.Value)> 15 Allora
MsgBox "Impossibile inserire più di 15 caratteri"
Cell.Value = ""
End If
Il Prossimo
End Sub

Un approccio più robusto è quello di verificare nel gestore di eventi per vedere se il cambiamento è stato fatto da qualche parte all'interno di un intervallo di celle che devono essere lunghezza limitata.

Private Sub Worksheet_Change (ByVal Target As Excel.Range)
RNG Dim come gamma
Dim RCELL come gamma
IChars Dim As Integer
On Error GoTo ErrHandler

'Cambiare questi come desiderato
iChars = 15
Set RNG = Me.Range ("A1: A10")

Se non si intersecano (Target, RNG) è niente allora
Application.EnableEvents = False
Per ogni RCELL In Intersect (Target, RNG)
Se Len (rCell.Value)> iChars Then
rCell.Value = Left (rCell.Value, iChars)
MsgBox rCell.Address & "è più che" _
& IChars e "personaggi". & VbCrLf _
E "E 'stato troncato."
End If
Il Prossimo
End If

ExitHandler:
Application.EnableEvents = True
Set RCELL = Nothing
Set RNG = Nothing
Exit Sub

ErrHandler:
MsgBox Err.Description
Riprendi ExitHandler
End Sub

Per utilizzare questa macro, è sufficiente modificare il valore assegnato a iChars (rappresenta la lunghezza massima consentita) e la gamma assegnata a RNG (attualmente fissato a A1: A10). Poiché i controlli macro solo per cambiamenti all'interno dell'intervallo specificato, è molto più veloce con i fogli di lavoro più grande della macro che controlla tutte le celle utilizzate.

ExcelTips è la vostra fonte per la formazione Microsoft Excel conveniente. Questo suggerimento (3150) si applica a Microsoft Excel 97, 2000, 2002, e 2003. È possibile trovare una versione di questo suggerimento per l'interfaccia ribbon di Excel (Excel 2007 e versioni successive) qui: Impostazione di una lunghezza limite relativo Cells.