Tecnología

Inicio

Consejos de programación de Excel

El lenguaje de programación para Microsoft Excel, Visual Basic, le permite extender ya un amplio conjunto de herramientas de Excel. Sin embargo, la codificación directamente en Visual Basic puede ser difícil debido a que algunas funciones (como la clasificación) requieren el establecimiento de varios parámetros de una manera exacta.

Usted puede evitar por completo dejando que el grabador de macros escribir el código para usted codificación manual, pero esto no siempre neta sea el resultado que buscan. La solución es combinar lo mejor de ambos mundos: utilizar macros para hacer la codificación a granel y un poco de codificación manual para terminar el trabajo.

Ordenar una tabla pequeña

Utilizar Visual Basic para ordenar una mesa pequeña. Para comenzar, ingrese el siguiente cuadro en las células del G8 a H11 en la Hoja 1:

nombre del cliente, saldo de la cuenta
Zephyr viento Máquinas, 5
Los escritorios Arondale, -10
Gumballs burbuja, 30

Una vez introducidos los datos, seleccionarlo y empezar a grabar la macro (desarrollador> Grabar macro). Nombre del mysort macro. Ordenar (Datos> Ordenar de A a Z) los datos seleccionados en la primera columna, y detener la grabación de la macro.

Reproducir la macro

Trate de usar la macro que recurrir un rango diferente: copiar y pegar la tabla de clientes a otra área de la hoja de cálculo y seleccione el nuevo rango. Repetir la macro (desarrollador> Macros> mysort), y observe el efecto: los datos no se solucionó. Busque el problema en el código de Visual Basic creado por su grabación de macros. Comience navegando al código: pulse Alt-F8, seleccione la macro mysort, y haga clic en el botón Editar.

Dentro de la función mysort, cuenta esta declaración:

ActiveWorkbook.Worksheets ( "Sheet1") Sort.SortFields.Add clave:. = Range ( "G-8") ...

Y una declaración de unas pocas líneas después de ella:

.SetRange Range ( "C9: D12")

Ambas declaraciones son el origen del problema; son las razones por las mysort no logra ordenar el rango seleccionado: la grabadora de macros de Visual Básico programado en forma fija el rango de datos ( "C9: D12" y "G-8") para ordenar. Su tarea es reemplazar los rangos codificados para hacer el tipo de macro la selección actual.

Usa la propiedad de Selección

En concreto, el parámetro clave: = Range ( "G-8") le dice a Excel para ordenar la tabla de clientes sobre la base de la columna "cliente", que comienza en la celda G8. Para sustituir a la columna original "cliente" con el uno dentro del texto seleccionado en ese momento, mira a la propiedad de selección del objeto Application. Esta propiedad se refiere al rango de celdas seleccionadas. Reemplazar Clave: = Range ( "G-8") con este: Clave: = k. Así define k en un momento.

El siguiente rango no modificable para reemplazar ocurre algunas declaraciones abajo: .SetRange Range ( "G8: H11"). El .SetRange método indica a Excel la gama completa que desea ordenar. Reemplazar .SetRange Range ( "G8: H11") con esto: ".SetRange r".

La variable r, al igual que la variable k (EY) que acaba de escribir, vendrá de la propiedad Selection. Ir al inicio de la definición de la macro y escriba estas líneas:

r tenue, k como gama

Establecer r = Application.Selection
Set k = r.Columns (1)

La primera asignación de Ajuste define el rango de celdas necesarias para el método .SetRange - toda la selección. La segunda asignación fija el rango necesario para la clave de clasificación a la primera columna de la selección. Puede ordenar en la segunda columna cambiando el "1" a un "2"

Prueba de la macro corregido

La corrección de código es completa. Prueba de que al volver a la hoja de cálculo, la selección de la tabla de clientes - donde quiera que lo colocó en la hoja - y funcionando mysort. Copiar esa tabla a un nuevo conjunto de celdas, seleccione las celdas, y ejecutar mysort en ellos de nuevo. Observe el tipo ahora funciona correctamente.