“Conocimientos software>Microsoft Access

Advanced Excel VBA Tutorial

2014/10/12
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.

Microsoft Access
¿Qué significa la CR en Excel
Cómo poner balas en una hoja de cálculo de Excel
Cómo convertir archivos de Excel 2007 a ​​Excel 2000
Cómo guardar un documento de Microsoft Excel 2007 como una versión anterior
Cómo cambiar los valores del eje X en Excel 2007
Cómo escribir datos de Access a Excel
¿Cómo deshacerse de los decimales en Excel al intentar Concatenar
Funciones de hoja de cálculo de Excel
Conocimientos Informáticos © http://www.ordenador.online