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 ingresar en una celda determinada. No quiere utilizar la validación de datos para imponer la limitación.

No hay forma de hacer esto directamente en Excel sin (como menciona Craig)

utilizando la validación de datos. Sin embargo, hay algunas cosas que puede intentar para lograr el efecto deseado. Primero, puede usar una fórmula para verificar la longitud de cualquier celda y luego mostrar un mensaje de error, si lo desea. Por ejemplo, si las celdas que desea verificar están en la columna C, puede usar una fórmula como la siguiente:

=IF((LEN(C1)>15),"Cell is Too Long","")

Coloque la fórmula en la celda a la derecha de la celda que se está marcando (como en la celda D1) y luego cópiela tantas celdas como sea necesario.

Cuando se realiza una entrada en C1, y si tiene más de 15 caracteres, se muestra el mensaje.

Si un enfoque tan directo no es deseable, necesitará utilizar macros para realizar la verificación. El siguiente es un ejemplo simple que se activa cada vez que se cambia algo en la hoja de trabajo. Luego, se verifica cada celda de la hoja de trabajo para asegurarse de que no tenga más de 15 caracteres. Si se descubre una celda de este tipo, se muestra un cuadro de mensaje y se borra la celda.

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 enfoque más sólido es verificar en el controlador de eventos para ver si el cambio se realizó en algún lugar dentro de un rango de celdas que deben tener una longitud limitada.

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

Para usar esta macro, simplemente necesita cambiar el valor asignado a iChars (representa la longitud máxima permitida) y el rango asignado a rng (actualmente establecido en A1: A10). Debido a que la macro solo verifica los cambios dentro del rango especificado, es mucho más rápido con hojas de trabajo más grandes que la macro que verifica todas las celdas utilizadas.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (10003) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Setting_a_Length_Limit_on_Cells [Establecer un límite de longitud en las celdas].