Saltar al contenido

Contador de caracteres restantes


shadowjuan

Recommended Posts

publicado

No es gran cosa, pero ahí lo dejo.

He puesto en un formulario un textbox limitado a 650 caracteres. Mi idea es poner un contador de caracteres restantes para saber cuándo se va a llegar al límite. Aporto la solución que he encontrado a ello:

Crear el textbox donde escribiremos, ej. Textbox1

Configurar MaxLength del TextBox1 (.MaxLength=650 en un WITH, o desde el menú de la izquierda) (650 es mi límite, cada uno pone el que quiera; no recomiendo 0)

Crear un textbox que nos hará de contador ej. TBContador

Configurar TBContador sin texto (.Text="" en un WITH, o desde el menú de la izquieda), con color de fondo "Cara de botón" (H8000000F) y SpecialEffects ponerlo a Flat (yo lo hago desde el menú de la izquierda). Así el contador es "transparente" sobre el gris del userform. Tamaño, posición, fuente... al gusto. Que se vea el número más largo posible para que quepa todo el texto (ver código).

Y poner esto en el userform:

Private Sub TBContador_Change()
With TBContador
.Text = 650 - UserForm1.TextBox1.TextLength
End With
End Sub

Private Sub textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
UserForm1.TBContador.Text = "Caracteres restantes: " & 650 - UserForm1.TextBox1.TextLength
End Sub[/CODE]

Tengo ambos subs por si las moscas.

Tal como está, si no hay nada escrito en el textbox1 de primeras, el contador no se ve (no aparece un 650). Quería intentarlo con una etiqueta, pero ya no he podido. Aconsejo también poner enabled=false en el cuadro de texto contador, para que no pueda seleccionarse, y que el ratón no cambie al señalar el lugar donde está.

Espero que os sea de utilidad. Puede mejorarse, es sólo una base.

Un saludo.

publicado

Hola:

Muy buena la idea, pero supongo que al copiar el código has copiado el que no era.

Ami me funciona así:

Private Sub TextBox1_Change()
TBContador.Text = TextBox1.MaxLength - TextBox1.TextLength
End Sub
[/CODE]

Gracias y saludos

publicado

Ok, adjunto. Lo he hecho todo lo sencillo que he podido, incluso he vuelto a trastear el código y lo he reducido al mínimo.

Os lo dejo pegado aquí de nuevo.

En módulo1, para mostrar el userform con la forma:

Sub mostrar()
UserForm1.Show
End Sub[/CODE]

En userform1:

[CODE]
Private Sub TextBox1_Change()
textboxcontador.Text = 100 - textbox1.TextLength
End Sub[/CODE]

Un saludo.

contador.zip

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.