Establecer un límite de longitud en las células

January 5

Craig está desarrollando una hoja de trabajo y quiere saber si hay una manera de especificar el número máximo de caracteres que se pueden introducir en cualquier célula. Él no quiere utilizar validación de datos para imponer la limitación.

No hay manera de hacer esto directamente en Excel sin (como se menciona Craig) mediante la validación de datos. Hay algunas cosas que usted puede intentar para conseguir el efecto deseado, sin embargo. En primer lugar, se puede utilizar una fórmula para comprobar la longitud de cualquier célula, y luego mostrar un mensaje de error, si lo desea. Por ejemplo, si las celdas que desea comprobar están en la columna C, podría utilizar una fórmula como la siguiente:

= SI ((LEN (C1)> 15), "Cell es demasiado larga", "")

Coloque la fórmula en la celda a la derecha de la celda que se comprueba (como en la celda D1), y luego copiarlo abajo tantas celdas como sea necesario. Cuando se realiza una entrada en C1, y si es mayor de 15 caracteres, a continuación, se muestra el mensaje.

Si un enfoque directo no es deseable, entonces usted tendrá que usar macros para hacer la comprobación. El siguiente es un ejemplo sencillo que se activa cada vez que algo ha cambiado en la hoja de trabajo. Cada celda de la hoja de trabajo se comprueba para asegurarse de que no es más de 15 caracteres. Si se descubre una célula, a continuación, se muestra un cuadro de mensaje y la célula se borra.

Private Sub Worksheet_SelectionChange (ByVal Target como gama)
Para cada celda en UsedRange
Si Len (Celda.Value)> 15 Entonces
MsgBox "No se puede introducir más de 15 caracteres"
Celda.Value = ""
End If
Siguiente
End Sub

Un enfoque más sólido es comprobar en el controlador de eventos para ver si el cambio se hizo en algún lugar dentro de un rango de celdas que deben ser de longitud limitada.

Private Sub Worksheet_Change (Target ByVal como Excel.Range)
Rng Dim como gama
Dim rCell como gama
IChars Dim As Integer
On Error GoTo ErrHandler

'Cambie estos como deseado
iChars = 15
Rng Set = Me.Range ("A1: A10")

Si No Intersect (Target, RNG) es nada Entonces
Application.EnableEvents = False
Para Cada rCell En Intersect (Target, RNG)
Si Len (rCell.Value)> iChars Entonces
rCell.Value = Izquierda (rCell.Value, iChars)
MsgBox rCell.Address y "tiene más" _
Y iChars y "personajes". Y vbCrLf _
Y "Se ha truncado".
End If
Siguiente
End If

ExitHandler:
Application.EnableEvents = True
Establecer rCell = Nothing
Rng Set = Nothing
Exit Sub

ErrHandler:
MsgBox Err.Description
Reanudar ExitHandler
End Sub

Para utilizar esta macro, sólo hay que cambiar el valor asignado a iChars (representa la longitud máxima permitida) y el rango asignado a rng (fijado actualmente en A1: A10). Debido a que las macro comprueba solamente para los cambios dentro de la gama especificada, es mucho más rápido con las hojas de trabajo más grandes que el macro que comprueba todas las células utilizadas.

ExcelTips es su fuente de capacitación rentable Microsoft Excel. Esta punta (3150) se aplica a Microsoft Excel 97, 2000, 2002, y 2003. Usted puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y versiones posteriores) aquí: El establecimiento de un límite de longitud en las células.