Microsoft Excel 's scripttaal , Visual Basic for Applications , heeft vele tools voor het verlengen van Excel's standaard mogelijkheden. Een dergelijk instrument is de mogelijkheid om controles ( zoals gewenste en knoppen ) direct op spreadsheets voegen . Met behulp van Visual Basic controles en haar vermogen aan te boren in Excel's kernfuncties zorgt voor een effectieve les in het verbeteren van Excel via Visual Basic for Applications . Project : Gebruik Visual Basic om subtotalen Bereken Onderneem een project van computergebruik subtotalen voor de kolommen in een werkblad tafel. Begin met het openen van Excel en het creëren van overal in het werkblad een tabel . De tabel ziet er in eerste instantie als de tabel in afbeelding 1 . Selecteer de tabel , inclusief de kolomkoppen , en maak de naam " myTab " voor deze tabel . Maak de naam door in Excel 's Name Box , dat is de richting van de linkerbovenhoek van het Excel- werkruimte . In Visual Basic Controls selectievakjes In de tabel , met elk vakje zit boven een kolom tabel . U kunt de selectievakjes vinden onder ontwikkelaar> Invoegen> Formulier Controls . Ook, voeg twee knoppen om het werkblad . Drag en drop ze uit hetzelfde gebied als de selectievakjes , naar links en rechts van de myTab tafel . Klik met de rechtermuisknop op de linker knop en verander de tekst om te lezen " Do Subtotalen . " Verander de tekst van de rechter knop om " subtotalen verwijderen . " Position of the knoppen en selectievakjes , zodat uw tafel lijkt op de tabel in afbeelding 2 . Schrijf de Code Nu dat je de tafel en zijn controles hebben ontworpen , zul je de code die de subtotalen op tafel doet schrijven . Voer de Visual Basic IDE ( Integrated Development Environment ) en voeg een Module . Klik op Invoegen > Module . In de code -venster van de nieuwe module , voert u dit programma code : Option Expliciete Public Sub doSubtotal ( ) Dim s Zoals StringDim r Als RangeDim c Als ObjectDim ar ( ) Als IntegerDim Ifield Zoals IntegerDim varItemsDim nChkd als Geheel ReDim ar ( 0 To 0 ) ' verwijder voor subtotalsRemoveSubtotals ' de reeks van velden indices maken ( vanaf 1 ) tot subtotaal ifield = 1nChkd = 0 ' Loop door checkboxes . Als er een is aangevinkt , voegt haar veld om elke c In ActiveSheet.CheckBoxes arrayFor Als ( c.Value = 1 ) ThennChkd = nChkd + 1 ' toe te voegen dit veld om matrix ar ( UBound ( ar ) ) = iFieldReDim Preserve ar ( 0 To UBound ( ar ) + 1 ) ' toe te voegen element voor volgend geselecteerde veld End Als ifield = ifield + 1 Volgende Als ( nChkd = 0 ) ThenMsgBox ( " Gelieve ten minste een vak . " ) Exit SubEnd Als ReDim Preserve ar ( 0 To UBound ( ar ) - 1 ) ' Verwijder lege laatste elementvarItems = ar ' Do werkelijke subtotaal . Zoek eerst het bereik te subtotaal te doen op Set r = Application.Names ( " myTab " ) RefersToRange ' halen het benoemde bereik te subtotaal r.Subtotal GroupBy : . = 1 , Functie : = xlSum , TotalList : = varItems , SummaryBelowData : = xlSummaryBelow End Sub Public Sub RemoveSubtotals ( ) ' Controleer voorafgaand subtotaal , met behulp van opslag die door de reactie veld in de Namespace voor myTab ( zie Formules > Naam manager ) " We slaan originele , eerste kolom van de tabel. Als beginnend column huidige tabel verschilt , moeten we tafel herstellen naar oorspronkelijke locatie . Dim r Zoals RangeDim s Zoals StringDim nOrigCol als Geheel Set r = Application.Names ( " myTab " ) . RefersToRanges = Application.Names ( " myTab " ) . Reageer ' No comment betekent geen voorafgaande run , dus geen verwijdering van voorafgaande subtotaal , of aanpassing van de originele reeks , is nodig . ' Maar , sparen beginnen kolom van de tabel voor de volgende oproep om dit function.If ( s = " " ) ThenApplication.Names ( " myTab " ) Reactie = r.ColumnExit SubEnd Als Application.Range ( . " a1 : xfd65536 . " ) RemoveSubtotal ' Adjust gamma : verwijderen van een kolom als men was addednOrigCol = CInt ( s ) Als ( nOrigCol < r.Column ) Thenr.Previous.EntireColumn.Delete End of als End Sub Voer het Programma Terug naar het Excel-werkblad dat het myTab tafel heeft . De knoppen toewijzen aan de macro's die u zojuist heeft geschreven. Klik met de rechtermuisknop de " Do Subtotalen " knop en selecteer " Macro toewijzen . " In het dialoogvenster dat verschijnt , selecteert u de functie " doSubtotal " , dat deel uitmaakt van de code die u zojuist heeft geschreven. Sluit het dialoogvenster door te klikken op " OK" en wijs de andere macro- functie die u schreef , RemoveSubtotals , aan de andere knop . Run je programma op basis van een combinatie van de selectievakjes en te klikken op de knop doen subtotalen . Wis het subtotaal door op de andere knop .
|