Setfocus a label dentro de formulario.

Tengo un mosaico de labels dentro de un control de pagina múltiple (5 paginas) lo que deseo hacer es escribir en un textbox el nombre del label y que automáticamente se aplique la propiedad setfocus para el label indicado independientemente de la pagina en la que se encuentre el label osea se cambie de pagina y se sitúe en el label (multipagina con scroll vertical)

1 respuesta

Respuesta
4

H  o l a:

Un label no puede aceptar el enfoque (SetFocus), VBA te lo marca como error:


Podemos encontrar en cuál página se encuentra el label, y entonces seleccionar la página que contiene el label.

Después de capturar el nombre del label en el textbox, podrías presionar un botón y buscar el label. Pon el siguiente código en un botón dentro del userform:

Private Sub CommandButton1_Click()
'Por.Dante Amor
    n = 0
    existe = False
    For Each mp In MultiPage1.Pages
        For Each c In mp.Controls
            If LCase(c.Name) = LCase(TextBox1) Then
                MultiPage1.Value = n
                existe = True
                Exit For
            End If
        Next
        n = n + 1
        If existe Then Exit For
    Next
    If existe = False Then
        MsgBox "El nombre de label no existe"
    End If
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Excelente Señor, solo que me pidió declarar las variables y las declare y además me posiciona en la página en donde se encuentra el label pero no me ubica en el label solicitado ya que al tener la propiedad de scrollbar en la multi página, si el label esta al final del scroll  lo tengo que desplazar manualmente  y seria fantástico que se hiciera el recorrido de pantalla para ubicarte en el label indicado. De antemano le agradezco el enorme apoyo brindado señor. 

Como ya lo comenté, no es posible poner el cursor en el label. No es una propiedad de Label.

Tendrías que hacer alguna especie de truco, por ejemplo, poner cada label dentro de un textbox, o el textbox debajo del Label, revisa la siguiente imagen, para hacerlo más gráfico puse el textbox más grande que el label:

El texbox se debe llamar "TLabel1", entonces si tu escribes Label1 y presionas el botón, entonces la macro se cambia a la Page1 y se posiciona en el textbox TLabel1

Si quieres pon la propiedad Locked del textbox igual a True

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Va la macro actualizada

Private Sub CommandButton1_Click()
'Por.Dante Amor
    n = 0
    existe = False
    For Each mp In MultiPage1.Pages
        For Each c In mp.Controls
            If LCase(c.Name) = LCase(TextBox1) Then
                MultiPage1.Value = n
                Controls("T" & TextBox1).SetFocus
                existe = True
                Exit For
            End If
        Next
        n = n + 1
        If existe Then Exit For
    Next
    If existe = False Then
        MsgBox "El nombre de label no existe"
    End If
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas