Foros del Web » Soporte técnico » Ofimática »

Excel: Limitar elnúmero de caracteres en un celda

Estas en el tema de Excel: Limitar elnúmero de caracteres en un celda en el foro de Ofimática en Foros del Web. Hola, me gustaría saber cómo puedo limitar el número de caracteres en una celda. Es decir, que sólo se puedan escribir, por ejemplo, 15 caracteres ...
  #1 (permalink)  
Antiguo 15/11/2010, 04:47
 
Fecha de Ingreso: julio-2007
Mensajes: 31
Antigüedad: 17 años, 5 meses
Puntos: 0
Excel: Limitar elnúmero de caracteres en un celda

Hola, me gustaría saber cómo puedo limitar el número de caracteres en una celda. Es decir, que sólo se puedan escribir, por ejemplo, 15 caracteres y no deje poner 16. La opción Datos/validar, creo que No me sirve ya que yo volcaré los datos al excel desde otro archivo y quiere que cuando los datos que van a ser volcados superen la longitud de 15, nada más me ponga los 15 primeros.

Gracias. Belén
  #2 (permalink)  
Antiguo 15/11/2010, 06:47
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años
Puntos: 144
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Si sabes algo de macros, copia este en la hoja en cuestión (no en un módulo):

Código:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Application.Intersect(Target, ActiveCell) Is Nothing Then
    ActiveCell = Left(ActiveCell, 15)
End If
End Sub
Saludos
  #3 (permalink)  
Antiguo 16/11/2010, 15:51
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses
Puntos: 39
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Cita:
Iniciado por 3pies Ver Mensaje
Si sabes algo de macros, copia este en la hoja en cuestión (no en un módulo): Saludos
3pies, copie el codigo en la hoja 1 y probé cambiabndo el 15 por 4, resultado
Entran cualquier cantidad de caracteres.
¿Alguna solucion? me interesa el tema
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg
  #4 (permalink)  
Antiguo 17/11/2010, 05:43
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años
Puntos: 144
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Es probable que eso te pase si en lugar de pulsar enter, al introducir un dato en la celda, pulsas las teclas de desplazamiento, o el tabulador. En ese caso, el evento Change no se dispara.

Para solucionarlo, podrías deshabilitar las teclas de desplazamiento y la tecla tabulador, incluyendo en el condicional anterior estas líneas:

Código:
Application.OnKey "{DOWN}", ""
Application.OnKey "{UP}", ""
Application.OnKey "{RIGHT}", ""
Application.OnKey "{LEFT}", ""
Application.OnKey "{TAB}", ""
  #5 (permalink)  
Antiguo 17/11/2010, 17:21
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses
Puntos: 39
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Sin tabulador, sin flechas solo Enter y todo sigue igual.
Tengo que mencionar que tengo 2010, no se si eso influi y no funcione en esta version
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg
  #6 (permalink)  
Antiguo 18/11/2010, 09:11
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 17 años, 1 mes
Puntos: 69
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Si es siempre una sola celda , puedes dejar eso estipulado en la macro...

por ejemplo esto se aplicaría solo si fuera la celda E4

Código:
If Target.Column = 5 Then
 If Target.Row = 4 Then

       Target.Value = Left(Target.Value, 15)

  end if
End If
El código de 3pies aplica para la celda que sea, donde quiera que escribas en esa hoja te limitará solo a 15 caracteres:


Código:
Private Sub Worksheet_Change(ByVal Target As Range)
    Target.Value = Left(Target.Value, 15)
End Sub
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar
  #7 (permalink)  
Antiguo 18/11/2010, 09:12
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 17 años, 1 mes
Puntos: 69
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

MMm se repitió mi mensaje no se porque, pero edito este para que no esté repetido.
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar
  #8 (permalink)  
Antiguo 18/11/2010, 10:03
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años
Puntos: 144
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Ays... Yo que uso 2003, y a veces 2007 (pocas), ...como para empezar con 2010 :P

El código que te ha puesto Monimo, te funcionará en todas las versiones de Excel.
  #9 (permalink)  
Antiguo 18/11/2010, 17:15
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses
Puntos: 39
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Desisto, si me funciona el de Monimo pero solo para una celda y no se como hacer para que este mismo puede actuar en toda la hoja o preferiblemente que yo pueda dar a una o mas columnas este formato, xe: tengo un libro con un frmulario que desde este se envian datos a la hoja, unos textBox que solo aceptan 4 caracteres y otros con solo 7 caracteres. Quisiera que en la hoja esas columnas SOLO acepten la cantidad de caracteres que se les envia desde el form para que nadie pueda modificar nada directamente en las hojas
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg
  #10 (permalink)  
Antiguo 19/11/2010, 08:02
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 17 años, 1 mes
Puntos: 69
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

te voy a poner el código explicado para que lo modifiques de acuerdo a lo que necesitas.

por ejemplo esto se aplicaría solo si fuera la celda E4

Código:

If Target.Column = 5 Then ' si la celda que estas escribiendo esta en la columna 5
If Target.Row = 4 Then ' evalúo que el renglón sea el 4

' si quisiera otra celda debo fijarme en que columna y en que renglón está para poner esos números aquí. por ejemplo A2 sería column =1 y row=2. Si quiero W55 sería column=23 row=55.

Target.Value = Left(Target.Value, 15) Target es la celda donde estoy escribiendo , la función left gunciona así: left(texto del que quiero cortar un x numero de caracteres desde el principio del texto, cuantos caracteres quiero que recorte)

si quiero que solo me permita 7 en lugar del 15 pongo 7, si quiero que me acepte 4 pongo un 4. Puedo poner tantas celdas sean necesarias evaluar.



end if
End If
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar

Última edición por Monimo; 19/11/2010 a las 08:07
  #11 (permalink)  
Antiguo 19/11/2010, 11:38
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses
Puntos: 39
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Lo de las celdas está caro pero, ¿Para una o mas columnas? digamos que quiero que la columna C Solo acepte 4 caracteres que la D solo acepte 7, la E 4, la F 7, la G 4, la H 7

Todo eso en una sola macro, un solo codigo para una columna y que se pueda adaptar a mas columnas.
No estoy mensionando celdas y si columnas que cada columna puede tener 65000 y tal celdas
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg
  #12 (permalink)  
Antiguo 19/11/2010, 12:55
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 17 años, 1 mes
Puntos: 69
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Pues solo tienes que adaptarlo a esas columnas.

Edito:

así:

Select Case Target.Column

Case is <aqui pones la columna C en Número que sería 3>

Target.Value = Left(Target.Value, 4)

Case is <Columna d>

Target.Value = Left(Target.Value, 7)

case is <otra columna>

Target.Value = Left(Target.Value, y el numero de caracteres que quieres que acepte)

End Select


Y así vas agregando "Case is" por cuantas quieras agregar
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar

Última edición por Monimo; 19/11/2010 a las 13:05
  #13 (permalink)  
Antiguo 19/11/2010, 17:59
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses
Puntos: 39
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

ENTENDIDOOOO, pregunto por mulo,

La macro es colocada en cada hoja de la(s) cual(es) quiero tener eso?
creo tiene que ser en cada hoja que vaia a usar el formato

edito:

No me acepta case is <5> se queda en rojo ni tampoco Case is <Columna 5>
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 19/11/2010 a las 18:44
  #14 (permalink)  
Antiguo 22/11/2010, 09:09
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 17 años, 1 mes
Puntos: 69
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Cita:
Iniciado por JoaoM Ver Mensaje
ENTENDIDOOOO, pregunto por mulo,

La macro es colocada en cada hoja de la(s) cual(es) quiero tener eso?
creo tiene que ser en cada hoja que vaia a usar el formato

edito:

No me acepta case is <5> se queda en rojo ni tampoco Case is <Columna 5>
Es que es Case is =5 lo que puse entre signos de mayor y menor eran explicaciones en pseudo código... la sintáxis es asi:

Case Is = 1
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar
  #15 (permalink)  
Antiguo 22/11/2010, 16:52
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses
Puntos: 39
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Llegue amigos.

Hice la prueba hoy y muy triste quedé, a punto de suicidarme.
es que no me resulta, acepta toda cantidad de caracteres que le meta.
¿Que estoy haciendo mal?

Cita:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Column

Case Is = c 'columna
Target.Value = Left(Target.Value, 4) ' numero de caracteres que quiera que acepte)

Case Is = d
Target.Value = Left(Target.Value, 7)

Case Is = e
Target.Value = Left(Target.Value, 4)

Case Is = f
Target.Value = Left(Target.Value, 7)

Case Is = g ''''''''''''''''''''''''''''''''''''''''''''''''' hago referencia acá para mensionar que tambien probe con numero Case Is = 1
Target.Value = Left(Target.Value, 4)

Case Is = h
Target.Value = Left(Target.Value, 7)

End Select
End Sub
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 22/11/2010 a las 16:58
  #16 (permalink)  
Antiguo 23/11/2010, 11:43
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 17 años, 1 mes
Puntos: 69
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Que raro a mi me funciona perfecto, pego ese código en la hoja en la que quiero esas restricciones. Por ejemplo en la Hoja uno y entonces en las columnas , E H y K tengo esas restricciones.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Column

Case Is = 5 'columna
Target.Value = Left(Target.Value, 4) ' numero de caracteres que quiera que acepte)

Case Is = 8
Target.Value = Left(Target.Value, 7)

Case Is = 11
Target.Value = Left(Target.Value, 4)

End Select
End Sub

Escribo todo el abecedario en una celda de la columna H doy enter y cuando termino me deja solo:

abcdefg

Podrías probar de nuevo?? Donde lo pegas? Que pasa si al terminar te posicionas sobre la misma celda donde escribiste? cambia algo?
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar
  #17 (permalink)  
Antiguo 23/11/2010, 12:03
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 17 años, 1 mes
Puntos: 69
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

A ver este debe funcionar perfecto

Código:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
TR = Target.Row - 1

Select Case Target.Column

Case Is = 3 'columna
Cells(TR, 3).Value = Left(Cells(TR, 3).Value, 7) ' numero de caracteres que quiera que acepte)

Case Is = 4
Cells(TR, 4).Value = Left(Cells(TR, 4).Value, 7)

Case Is = 5
Cells(TR, 5).Value = Left(Cells(TR, 5).Value, 4)

Case Is = 6
Cells(TR, 6).Value = Left(Cells(TR, 6).Value, 7)

Case Is = 7 ''''''''''''''''''''''''''''''''''''''''''''''''' hago referencia acá para mensionar que tambien probe con numero Case Is = 1
Cells(TR, 7).Value = Left(Cells(TR, 7).Value, 7)

Case Is = 8
Cells(TR, 8).Value = Left(Cells(TR, 8).Value, 7)

End Select
End Sub
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar
  #18 (permalink)  
Antiguo 23/11/2010, 15:30
 
Fecha de Ingreso: julio-2006
Ubicación: Madrid
Mensajes: 943
Antigüedad: 18 años, 4 meses
Puntos: 56
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Hola,

El evento es change, no selectionchange

Además, en el Case el valor de igualdad debe ser el número de la columnas, no la letra.

Un saludo.
  #19 (permalink)  
Antiguo 23/11/2010, 15:36
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 17 años, 1 mes
Puntos: 69
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Cita:
Iniciado por jchuk Ver Mensaje
Hola,

El evento es change, no selectionchange

Además, en el Case el valor de igualdad debe ser el número de la columnas, no la letra.

Un saludo.
Es cierto, no se porque el lo cambió a selection change ¬¬ yo lo puse como Worksheet_Change...y luego ya solo copié jaja . Bueno espero que lo resuelva y muchas gracias por la observación.
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar
  #20 (permalink)  
Antiguo 23/11/2010, 19:11
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses
Puntos: 39
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

donde mejor funciona es en selectionchange, en change dá mucho error 1004

En selectionchange funciona pero de cuando en cuando dá un error 1004 tambien XE.

Escribo en la celda 3, bien, d3 bien, e4 bien, f3 da error 1004, finaliso, sigo en h1 bien, d5 bien, g3 da error

Cambie a varios metodos pero el que mejor funciona es este selectionchange

Cita:
Iniciado por Monimo Ver Mensaje
Escribo todo el abecedario en una celda de la columna H doy enter y cuando termino me deja solo:

abcdefg
Podrías probar de nuevo?? Donde lo pegas? Que pasa si al terminar te posicionas sobre la misma celda donde escribiste? cambia algo?
En mi 2010 no me funciona.
con el codigo del post 16 Probé escribir en una celda 10 caracteres, doy enter y quedan los mismo 10, vuelvo a colocarme en la misma celda y cambia a la cantidad explicita en el codigo

Lo pego en la hoja, es decir en cada hoja pego el codigo
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 23/11/2010 a las 19:23
  #21 (permalink)  
Antiguo 24/11/2010, 09:10
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 17 años, 1 mes
Puntos: 69
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Utiliza este, aquí ya cambié que sea justo cuando escribes y no cuando pasas de nuevo sobre la celda modificada.
Código:
Private Sub Worksheet_Change(ByVal Target As Range)
On error resume next
TR = Target.Row - 1

Select Case Target.Column

Case Is = 3 'columna
Cells(TR, 3).Value = Left(Cells(TR, 3).Value, 7) ' numero de caracteres que quiera que acepte)

Case Is = 4
Cells(TR, 4).Value = Left(Cells(TR, 4).Value, 7)

Case Is = 5
Cells(TR, 5).Value = Left(Cells(TR, 5).Value, 4)

Case Is = 6
Cells(TR, 6).Value = Left(Cells(TR, 6).Value, 7)

Case Is = 7 ''''''''''''''''''''''''''''''''''''''''''''''''' hago referencia acá para mensionar que tambien probe con numero Case Is = 1
Cells(TR, 7).Value = Left(Cells(TR, 7).Value, 7)

Case Is = 8
Cells(TR, 8).Value = Left(Cells(TR, 8).Value, 7)

End Select
End Sub

Prueba con este y nos comentas...Aquí seguiré hasta que quede :)
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar
  #22 (permalink)  
Antiguo 24/11/2010, 20:09
 
Fecha de Ingreso: agosto-2007
Mensajes: 1.945
Antigüedad: 17 años, 3 meses
Puntos: 39
Respuesta: Excel: Limitar elnúmero de caracteres en un celda

Pienso que te equivocaste al dejar el codigo, me parece igual que el anterior. Lo unico que no da error

On error resume next
es la unica diferencia

OK,

pase el codigo para Private Sub Worksheet_SelectionChange(ByVal Target As Range) y si funciona perfecto con la linea del error, On error resume next
sin la linea del error, hace lo que te comente ayer.

En la Private Sub Worksheet_Change(ByVal Target As Range) no me funciona, no da el error por la misma linea pero no me funciona

Si quieres que proceda en todas las hojas del libro hay que colocar el codigo en
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) me funciona PERFECTO
a menos que el usuario quiera el proceso en hojas individuales o salteadas (DISCONTINUAS), entonces si, tiene que colocar el codigo en las hojas que pretenda

Creo que llegamos al final con la linea del error, está perfecto, el cual agradesco imensamente tu generosidad en ayudar y poner toda tu sabiduria en esto.

Gracias miles
__________________
Las contraseñas son como la ropa interior: Nunca dejarlas donde la gente pueda verlas
http://i64.tinypic.com/rho40i.jpg

Última edición por JoaoM; 24/11/2010 a las 20:21

Etiquetas: caracteres, celda, excel, limitar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:46.