Ejemplo de evento Layout, propiedad LayoutEffect y método Move
En el ejemplo siguiente se mueve un control seleccionado en un formulario con el método Move y se usan los eventos Layout y LayoutEffect para identificar el control que se movió (y cambió el diseño de UserForm).
El usuario hace clic en un control para moverse y, a continuación, hace clic en el control CommandButton. Un cuadro de mensaje muestra el nombre del control que se está moviendo.
Para usar este ejemplo, copie este código de muestra en la parte Declaraciones de un formulario. Asegúrese de que el formulario contiene:
- Un control TextBox denominado TextBox1.
- Un control ComboBox denominado ComboBox1.
- OptionButton denominado OptionButton1.
- Un control CommandButton denominado CommandButton1.
- Un control ToggleButton denominado ToggleButton1.
Private Sub UserForm_Initialize()
CommandButton1.Caption = "Move current control"
CommandButton1.AutoSize = True
CommandButton1.TakeFocusOnClick = False
ToggleButton1.Caption = "Use Layout Event"
ToggleButton1.Value = True
End Sub
Private Sub CommandButton1_Click()
If ActiveControl.Name = "ToggleButton1" Then
'Keep it stationary
Else
'Move the control, using Layout event when
'ToggleButton1.Value is True
ActiveControl.Move 0, 0, , , _
ToggleButton1.Value
End If
End Sub
Private Sub UserForm_Layout()
Dim MyControl As Control
MsgBox "In the Layout Event"
'Find the control that is moving.
For Each MyControl In Controls
If MyControl.LayoutEffect = _
fmLayoutEffectInitiate Then
MsgBox MyControl.Name & " is moving."
Exit For
End If
Next
End Sub
Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
ToggleButton1.Caption = "Use Layout Event"
Else
ToggleButton1.Caption = "No Layout Event"
End If
End Sub
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.