Hola.Estoy empezando con las macros en formularios de Base y me surge una duda.
En uno de los campos de mi formulario hay una serie de valores que se repiten mucho, así que he puesto un cuadro combinado para seleccionar esos valores. Pero también hay valores únicos que no están entre los que ofrece el cuadro, y en ese caso hay que escribirlos.
El 90% de los valores que van en ese campo empiezan con los mismos caracteres (es un campo de referencias, y la mayoría empiezan por "C-AXB0" y luego siguen números, por ejemplo "C-AXB004381"), entonces lo que he hecho es una macro que cuando el cuadro combinado recibe el foco escribe automáticamente C-AXB0, de forma que el usuario sólo tenga que completarlo con los números que faltan. En caso de que sea una referencia de las pocas que no empiezan así, se sobreescribe y ya está.
El problema es que cuando recibe el foco, escribe C-AXB0 pero el cursor se queda al principio del campo (antes de la C) y me preguntaba si es posible desde la propia macro dejar el cursor ya colocado después del 0 para escribir sin más lo que falta.
No es un problema grave (se arregla pulsando la tecla Fin del teclado antes de escribir la parte que falta), pero me queda la duda de si es posible hacerlo.
Muchas gracias.
[RESUELTO] Colocar el cursor en un lugar específico de un te
[RESUELTO] Colocar el cursor en un lugar específico de un te
Última edición por mauricio el Jue Jul 27, 2017 4:17 pm, editado 2 veces en total.
Razón: Marcar icono de resuelto
Razón: Marcar icono de resuelto
Libreoffice 4.2.6.3 / Windows 10
Re: Colocar el cursor en un lugar específico de un texto
Hola,
Creo que hay algún que otro ejemplo en el foro sobre esto. Con una búsqueda lo encontrarás.
Saludos
Creo que hay algún que otro ejemplo en el foro sobre esto. Con una búsqueda lo encontrarás.
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Colocar el cursor en un lugar específico de un texto
Buenos días.
Lo intenté antes de hacer la consulta, pero todas las referencias que encuentro en el foro a posiciones de cursor se refieren a celdas, rangos, etc de excel o bien a poner el foco en uno u otro campo. No he encontrado ningún hilo que se refiera a lo que yo busco, que es mover el cursor al final del texto dentro del mismo campo en el que ya está.
Pero bueno, volveré a mirar por si se me ha escapado algo.
Un saludo y gracias.
Lo intenté antes de hacer la consulta, pero todas las referencias que encuentro en el foro a posiciones de cursor se refieren a celdas, rangos, etc de excel o bien a poner el foco en uno u otro campo. No he encontrado ningún hilo que se refiera a lo que yo busco, que es mover el cursor al final del texto dentro del mismo campo en el que ya está.
Pero bueno, volveré a mirar por si se me ha escapado algo.
Un saludo y gracias.
Libreoffice 4.2.6.3 / Windows 10
Re: Colocar el cursor en un lugar específico de un texto
Hola,
Mira si este ejemplo te sirve.
Saludos
Mira si este ejemplo te sirve.
Código: Seleccionar todo
Sub RecibeFoco( Evento )
Dim oSel As Object
oSel = Evento.Source.Selection
oSel.Min = 0
oSel.Max = Len(Evento.Source.Text)
Evento.Source.Selection = oSel
End Sub
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
[Resuelto] Colocar el cursor en un lugar específico de un te
Solucionado.
Con el código que has puesto pone el cursor al final pero deja el texto seleccionado, con lo que al escribir algo nuevo elimina lo que ya estaba. Pero lo he solucionado cambiando el límite inferior de la selección de 0 a Len(Evento.Source.Text), con lo que el cursor queda al final del texto sin tener nada seleccionado
Muchas gracias!
Con el código que has puesto pone el cursor al final pero deja el texto seleccionado, con lo que al escribir algo nuevo elimina lo que ya estaba. Pero lo he solucionado cambiando el límite inferior de la selección de 0 a Len(Evento.Source.Text), con lo que el cursor queda al final del texto sin tener nada seleccionado
Código: Seleccionar todo
Sub RecibeFoco( Evento )
Dim oSel As Object
oSel = Evento.Source.Selection
oSel.Min = Len(Evento.Source.Text)
oSel.Max = Len(Evento.Source.Text)
Evento.Source.Selection = oSel
End Sub
Libreoffice 4.2.6.3 / Windows 10