/ / Excel VBA Userform and Ranges

Excel VBA Userform and Ranges

Puedes usar un Control de reedición en Excel VBA para obtener un rango de un usuario. los Formulario de usuario Vamos a crear colores el valor mínimo de la distancia Se almacena en el control RefEdit.

Forma de usuario y rangos en Excel VBA

Para crear este formulario de usuario, ejecute los siguientes pasos.

1. Abra el Editor de Visual Basic. Si el Explorador de proyectos no está visible, haga clic en Ver, Explorador de proyectos.

2. Haga clic en Insertar, formulario de usuario. Si el Cuadro de herramientas no aparece automáticamente, haga clic en Ver, Cuadro de herramientas. Su pantalla debe configurarse como se muestra abajo.

Configuración de pantalla de formulario de usuario en Excel VBA

3. Agregue la etiqueta, el control RefEdit y los botones de comando. Una vez que se haya completado, el resultado debe ser consistente con la imagen del formulario de usuario que se mostró anteriormente. Por ejemplo, cree un control RefEdit haciendo clic en RefEdit en el Cuadro de herramientas. A continuación, puede arrastrar un control RefEdit en el formulario de usuario.

Nota: Si su caja de herramientas no tiene un control RefEdit, establezca una referencia al control RefEdit. Haga clic en Herramientas, Referencias y marque Control de edición de referencia.

4. Puede cambiar los nombres y las leyendas de los controles. Los nombres se utilizan en el código de Excel VBA. Los subtítulos son aquellos que aparecen en tu pantalla. Es una buena práctica cambiar los nombres de los controles, pero no es necesario aquí porque solo tenemos algunos controles en este ejemplo. Para cambiar el título de los botones de formulario de usuario, etiqueta y comando, haga clic en Ver, Ventana de propiedades y haga clic en cada control.

5. Para mostrar el formulario de usuario, coloque un botón de comando en su hoja de trabajo y agregue la siguiente línea de código:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Ahora vamos a crear el Sub UserForm_Initialize. Cuando use el método Mostrar para el formulario de usuario, este sub se ejecutará automáticamente.

6. Abra el Editor de Visual Basic.

7. En el Explorador de proyectos, haga clic con el botón derecho en UserForm1 y luego haga clic en Ver código.

8. Elija Userform en la lista desplegable de la izquierda. Elija Inicializar de la lista desplegable de la derecha.

9. Agregue las siguientes líneas de código:

Private Sub UserForm_Initialize()

Sheet1.Cells.Font.Color = vbBlack
UserForm1.RefEdit1.Text = Selection.Address

End Sub

Explicación: la primera línea de código cambia el color de fuente de todas las celdas en sheet1 a negro. La segunda línea de código obtiene la dirección de la selección actual y la muestra en el control RefEdit.

Ahora hemos creado la primera parte del formulario de usuario. Aunque ya se ve limpio, no ocurrirá nada cuando hagamos clic en los botones de comando en el formulario de usuario.

10. En el Explorador de proyectos, haga doble clic en UserForm1.

11. Haga doble clic en el botón Ir.

12. Agregue las siguientes líneas de código:

Private Sub CommandButton1_Click()

Dim addr As String, rng, cell As Range, minimum As Double

addr = RefEdit1.Value
Set rng = Range(addr)
minimum = WorksheetFunction.Min(rng)

For Each cell In rng
    If cell.Value = minimum Then cell.Font.Color = vbRed
Next cell

End Sub

Explicación: Primero, obtenemos la dirección del control RefEdit y la almacenamos en la variable String addr. A continuación, establecemos rng en el rango especificado en el control RefEdit. A continuación, usamos la función de hoja de trabajo Min para encontrar el valor mínimo en el rango. Finalmente, coloreamos los valores mínimos utilizando un bucle.

13. Haga doble clic en el botón Cancelar.

14. Agregue la siguiente línea de código:

Private Sub CommandButton2_Click()

Unload Me

End Sub

Explicación: esta línea de código cierra el formulario de usuario cuando hace clic en el botón Cancelar.

15. Probar el formulario de usuario.

Resultado:

Formulario de usuario y resultados de rangos

Lea también: