Avansert Excel VBA Tutorial

Avansert Excel VBA Tutorial


Microsoft Excel skriptspråk, Visual Basic for Applications, har mange verktøy for å utvide Excel standardfunksjoner. Et slikt verktøy er muligheten til å legge til kontroller (for eksempel avmerkingsboksene og knapper) direkte på regneark. Ved hjelp av Visual Basic kontroller og dens evne til å benytte seg Excel kjernefunksjoner gir en effektiv opplæring i å forbedre Excel gjennom Visual Basic for Applications.

Prosjekt: Bruk Visual Basic for å beregne delsummer

Avansert Excel VBA Tutorial


Gjennomføre et prosjekt for å beregne delsummer for kolonnene i et regneark bord. Begynn med å åpne Excel og lage et bord hvor som helst i regnearket. Tabellen i utgangspunktet ser ut som tabellen i Figur 1.

Marker tabellen, inkludert kolonneoverskriftene, og skape navnet "myTab" for denne tabellen. Lag navnet ved å skrive det i Excel navn Box, som er mot den øvre venstre hjørne av Excel arbeidsområdet.

Legg Visual Basic Controls

Avansert Excel VBA Tutorial


Legg avmerkingsboksene til bordet, med hver boksen sitter ovenfor en tabellkolonne. Du kan finne avmerkingsboksene henhold Utvikler> Sett> desse. Også legge til to knapper til regnearket. Dra og slipp dem fra samme område som de avmerkingsboksene, til venstre og høyre for myTab tabellen. Høyreklikk på venstre knapp og endre teksten for å lese "Do delsummer." Endre teksten i den høyre knappen "Fjern delsummer."

Plasser knapper og avmerkingsbokser slik tabellen ser ut tabellen i Figur 2.

Skriv koden

Nå som du har designet bordet og kontrollene, vil du skrive koden som gjør delsummene på bordet. Angi Visual Basic IDE (integrert utviklingsmiljø) og legge til en modul. Klikk på Sett inn> Module. I koden vinduet av den nye modulen, angi dette programmet kode:

Option Explicit

Public Sub doSubtotal ()

Dim s As String
Dim r As Range
Dim c As Object
Dim ar () As Integer
Dim Ifield As Integer
Dim varItems
Dim nChkd As Integer

ReDim ar (0 til 0)

'Fjerne tidligere delsummer
RemoveSubtotals

'Opprette rekke felt indekser (fra 1) for å delsum

Ifield = 1
nChkd = 0

'Loop gjennom avmerkingsboksene. Hvis man er krysset av, legge sitt felt for å rekke
For hver c I ActiveSheet.CheckBoxes

Hvis (c.Value = 1) Deretter
nChkd = nChkd + 1
Legg til dette feltet for å rekke

ar (UBound (ar)) = Ifield
ReDim Bevar ar (0 For å UBound (ar) + 1) 'legge element for neste valgte felt

Slutt om

Ifield = Ifield + 1

neste

Hvis (nChkd = 0) Then

MsgBox ("Please check at least one box.")
Exit Sub

Slutt om

ReDim Bevar ar (0 For å UBound (ar) - 1) "Fjern tom siste elementet
varItems = ar

"Gjør faktiske delsum. Først må du finne området å gjøre delsum på

Still r = Application.Names ( "myTab"). RefersToRange 'hente navngitte området til delsum

r.Subtotal GroupBy: = 1, Funksjon: = xlSum, TotalList: = varItems, SummaryBelowData: = xlSummaryBelow

End Sub

Public Sub RemoveSubtotals ()

"Se etter foregående delvis, ved hjelp av lagrings levert av kommentarfeltet i navnerom for myTab (se Formler> Navn manager)
'Vi lagrer tabellen opprinnelige første spalte. Hvis nåværende tabellens startkolonne forskjellig, må vi gjenopprette bordet til den opprinnelige plasseringen.

Dim r As Range
Dim s As String
Dim nOrigCol As Integer

Still r = Application.Names ( "myTab"). RefersToRange
s = Application.Names ( "myTab»). Comment

«Ingen kommentar betyr ingen tidligere løp, så ingen fjerning av foregående delvis, eller justering av originale serien, er nødvendig.

Men, redde tabellens start kolonnen for neste anrop til denne funksjonen.
Hvis (s = "") Så

Application.Names("myTab").Comment = r.Column
Exit Sub

Slutt om

Application.Range ( "a1: xfd65536") RemoveSubtotal.

'Justere Område: fjerne en kolonne hvis man ble lagt
nOrigCol = Cint (r)
Hvis (nOrigCol <r.Column) Deretter
r.Previous.EntireColumn.Delete

Slutt om

End Sub

Kjør Program

Gå tilbake til Excel-regneark som har myTab tabellen. Tildele knappene til makroene du nettopp skrev. Høyreklikk på "Do Subtotals" -knappen og velg "Tilordne makro". I dialogboksen som vises, velger du "doSubtotal" -funksjonen, som er en del av koden du nettopp skrev. Lukk dialogboksen ved å klikke på "OK", og tildele den andre makrofunksjonen du skrev, RemoveSubtotals, til den andre knappen.

Kjør programmet ved å sjekke hvilken som helst kombinasjon av avmerkingsboksene og klikke på knappen gjøre delsummer. Tømme delsummer ved å trykke på en annen knapp.