lenguaje de scripting de Microsoft Excel , Visual Basic para aplicaciones, tiene muchas herramientas para extender las capacidades por defecto de Excel. Una de estas herramientas es la capacidad de agregar controles (tales como casillas de verificación y botones ) directamente sobre las hojas de cálculo . Uso de los controles de Visual Basic y su capacidad para aprovechar las funciones básicas de Excel lo convierte en un tutorial eficaz en la mejora Excel a través de Visual Basic para Aplicaciones. Proyecto : Utilizar Visual Basic para Calcular subtotales
Emprender un proyecto de computación subtotales para las columnas de una tabla de hoja de cálculo. Comience por abrir Excel y la creación de una mesa en cualquier lugar de la hoja de cálculo . El cuadro inicial se parece a la mesa en la ilustración 1 .
Seleccione la tabla, incluyendo los encabezados de columna y crear el nombre de " MyTab " para esta tabla. Crear el nombre , introduciendo su nombre en la caja de Excel , que es hacia la esquina superior izquierda del área de trabajo de Excel .
Agregar controles de Visual Basic
Agregar casillas de la tabla , con cada casilla que se sienta encima de una columna de la tabla . Usted puede encontrar las casillas de verificación bajo desarrollador> Insertar > Controles de formulario . Además, agregue dos botones a la hoja de cálculo. Arrastrar y soltar en la misma zona que las casillas de verificación , a la izquierda ya la derecha de la tabla MyTab . Haga clic con el botón izquierdo y cambiar el texto para leer " subtotales ". Cambiar el texto del botón derecho de "Quitar subtotales . "
Posición de los botones y casillas de verificación para que su mesa se parece a la mesa en la ilustración 2 .
Escriba el código
Ahora que usted ha diseñado la mesa y sus controles , se escribirá el código que hace los subtotales de la tabla . Introduzca el IDE de Visual Basic ( entorno de desarrollo integrado ) y añadir un módulo . Haga clic en Insertar > Módulo . En la ventana de código del nuevo módulo , escriba el código del programa :
Opción
explícita
Public Sub doSubtotal ()
s As StringDim r Como RangeDim c Como ObjectDim ar () Como IntegerDim iField Como IntegerDim varItemsDim nChkd As Integer
ReDim ar ( 0 a 0 )
'Eliminar subtotalsRemoveSubtotals anteriores
' Crear el array de campos de índices (a partir de 1 ) al subtotal
iField = 1nChkd = Loop 0
'a través de casillas de verificación. Si se comprueba una, añadir su campo de arrayFor Cada c En ActiveSheet.CheckBoxes
Si ( c.Value = 1 ) = ThennChkd nChkd + 1 ' agregar este campo a la matriz
ar ( UBound (ar )) = iFieldReDim Preserve ar ( 0 To UBound ( ar) + 1 ) 'Agregar elemento para el siguiente campo seleccionado
End If
iField = iField + 1
Siguiente
Si ( nChkd = 0 ) ThenMsgBox ( " marcar al menos una casilla por favor . ") Exit SubEnd Si
ReDim Preserve ar ( 0 To UBound ( ar) - 1 ) 'Quitar vacía últimos elementvarItems = ar
' Do subtotal actual . En primer lugar, encontrar el rango que ver subtotal en
Set r = Application.Names ( " MyTab ") RefersToRange ' recuperar el rango con nombre de subtotal
GroupBy r.Subtotal : . = 1 , la función : = xlSum , TotalList : = varItems , SummaryBelowData : = xlSummaryBelow
End Sub
RemoveSubtotals Public Sub ( ) guía
' Comprobar si antes subtotal , el uso de almacenamiento proporcionado por el comentario campo en el espacio de nombres para MyTab (véase Fórmulas > Administrador Name) ' Almacenamos original de la primera columna de la tabla . Si la columna a partir de la tabla actual es diferente , tenemos que restaurar la tabla en la ubicación original .
R As RangeDim s Como StringDim nOrigCol As Integer
Set r = Application.Names ( " MyTab ") . RefersToRanges = Application.Names ( " MyTab ") . comentario
' ningún comentario significa que no hay carrera previa , por lo que no se necesita la eliminación de subtotal antes , o el ajuste de la gama original, .
' Pero , salvo la columna a partir de la tabla para la siguiente llamada a este function.If ( s = "") ThenApplication.Names ( " MyTab " ) Comment = r.ColumnExit SubEnd Si
Application.Range ( . "a1 : xfd65536 . ") RemoveSubtotal
' Ajuste rango: eliminar una columna, si uno era addednOrigCol = CInt ( s ) Si ( nOrigCol < r.Column ) Thenr.Previous.EntireColumn.Delete
End If
End Sub
ejecutar el programa
Regresar a la hoja de cálculo Excel que tiene la tabla MyTab . Asigne los botones para las macros que acaba de escribir . Haga clic derecho en el botón "Haz subtotales " y seleccione " Asignar Macro ". En el cuadro de diálogo que aparece , seleccione la función " doSubtotal " , que es parte del código que acaba de escribir . Cierre el cuadro de diálogo haciendo clic en " Aceptar", y asignarle otra función macro que escribiste , RemoveSubtotals , al otro botón.
Ejecutar el programa mediante la comprobación de cualquier combinación de las casillas de verificación y haga clic en el botón subtotales hacer. Borrar los subtotales pulsando otro botón.