excel-vba Handledning
Komma igång med excel-vba
Sök…
Anmärkningar
Microsoft Excel innehåller ett omfattande makroprogrammeringsspråk som heter VBA. Detta programmeringsspråk ger dig minst tre ytterligare resurser:
- Kör automatiskt Excel från kod med makron. För det mesta kan allt som användaren kan göra genom att manipulera Excel från användargränssnittet göras genom att skriva kod i Excel VBA.
- Skapa nya anpassade kalkylarkfunktioner.
- Interagera Excel med andra applikationer som Microsoft Word, PowerPoint, Internet Explorer, Notepad etc.
VBA står för Visual Basic for Applications. Det är en anpassad version av det värdefulla Visual Basic-programmeringsspråket som har drivit Microsoft Excel: s makron sedan mitten av 1990-talet.
VIKTIG
Se till att exempel eller ämnen som skapats i excel-vba-taggen är specifika och relevanta för användningen av VBA med Microsoft Excel. Alla föreslagna ämnen eller exempel som tillhandahålls som är generiska för VBA-språket bör avböjas för att förhindra dubbelarbete.
exempel på ämnet:
✓ Skapa och interagera med kalkylarkobjekt
✓WorksheetFunction
och respektive metoder
✓ AnvändxlDirection
uppräkningen för att navigera i ett intervall
exempel utanför ämnet:
✗ Hur man skapar en 'för varje' slinga
✗MsgBox
klassen och hur man visar ett meddelande
✗ Använda WinAPI i VBA
versioner
VB
Version | Utgivningsdatum |
---|---|
VB6 | 1998/10/01 |
VB7 | 2001-06-06 |
WIN32 | 1998/10/01 |
Win64 | 2001-06-06 |
MAC | 1998/10/01 |
Excel
Version | Utgivningsdatum |
---|---|
16 | 2016/01/01 |
15 | 2013-01-01 |
14 | 2010-01-01 |
12 | 2007-01-01 |
11 | 2003-01-01 |
10 | 2001-01-01 |
9 | 1999-01-01 |
8 | 1997-01-01 |
7 | 1995-01-01 |
5 | 1993/01/01 |
2 | 1987-01-01 |
Förklarande variabler
För att uttryckligen deklarera variabler i VBA, använd Dim
satset, följt av variabelns namn och typ. Om en variabel används utan att deklareras, eller om ingen typ anges, tilldelas den typen Variant
.
Använd uttalandet Option Explicit
på den första raden i en modul för att tvinga alla variabler att deklareras före användning (se ALLTID Använd "Option Explicit" ).
Att alltid använda Option Explicit
rekommenderas starkt eftersom det hjälper till att förhindra typfel / stavfel och säkerställer att variabler / objekt förblir sin avsedda typ.
Option Explicit
Sub Example()
Dim a As Integer
a = 2
Debug.Print a
'Outputs: 2
Dim b As Long
b = a + 2
Debug.Print b
'Outputs: 4
Dim c As String
c = "Hello, world!"
Debug.Print c
'Outputs: Hello, world!
End Sub
Flera variabler kan deklareras på en enda rad med hjälp av kommatecken som avgränsare, men varje typ måste deklareras individuellt , annars kommer de som standard att vara Variant
.
Dim Str As String, IntOne, IntTwo As Integer, Lng As Long
Debug.Print TypeName(Str) 'Output: String
Debug.Print TypeName(IntOne) 'Output: Variant <--- !!!
Debug.Print TypeName(IntTwo) 'Output: Integer
Debug.Print TypeName(Lng) 'Output: Long
Variabler kan också deklareras med datatypsuffix ($% &! # @), Men att använda dessa blir alltmer avskräckta.
Dim this$ 'String
Dim this% 'Integer
Dim this& 'Long
Dim this! 'Single
Dim this# 'Double
Dim this@ 'Currency
Andra sätt att deklarera variabler är:
-
Static
som:Static CounterVariable as Integer
När du använder statisk sats i stället för en dim-sats, behåller den deklarerade variabeln sitt värde mellan samtal.
-
Public
like:Public CounterVariable as Integer
Offentliga variabler kan användas i alla procedurer i projektet. Om en offentlig variabel deklareras i en standardmodul eller en klassmodul, kan den också användas i alla projekt som refererar till projektet där den offentliga variabeln deklareras.
-
Private
som:Private CounterVariable as Integer
Privata variabler kan endast användas av procedurer i samma modul.
Källa och mer info:
Öppna Visual Basic Editor (VBE)
Steg 1: Öppna en arbetsbok
Steg 2 Alternativ A: Tryck på Alt + F11
Detta är standardgenvägen för att öppna VBE.
Steg 2 Alternativ B: Flik för utvecklare -> Visa kod
Först måste utvecklarfliken läggas till i bandet. Gå till Arkiv -> Alternativ -> Anpassa band och markera sedan rutan för utvecklare.
Gå sedan till utvecklarfliken och klicka på "Visa kod" eller "Visual Basic"
Steg 2 Alternativ C: Visa flik> Makron> Klicka på Redigera för att öppna en befintlig makro
Alla tre av dessa alternativ öppnar Visual Basic Editor (VBE):
Lägga till en ny objektbibliotekreferens
Proceduren beskriver hur man lägger till en objektbibliotekreferens och sedan hur man deklarerar nya variabler med hänvisning till de nya biblioteksklassobjekten.
Exemplet nedan visar hur du lägger till PowerPoint- biblioteket i det befintliga VB-projektet. Som framgår är PowerPoint Object-biblioteket för närvarande inte tillgängligt.
Steg 1: Välj Meny Verktyg -> Referenser ...
Steg 2 : Välj den referens du vill lägga till. I det här exemplet bläddrar vi ner för att hitta " Microsoft PowerPoint 14.0 Object Library " och trycker sedan på " OK ".
Obs: PowerPoint 14.0 betyder att Office 2010-versionen är installerad på datorn.
Steg 3 : När du trycker på Ctrl + Space tillsammans i VB-redigeraren får du PowerPoint-autofullständigt alternativ.
Efter att ha valt PowerPoint
och tryckt på .
, visas en annan meny med alla objektalternativ relaterade till PowerPoint-objektbiblioteket. Detta exempel visar hur du väljer PowerPoint-objektets Application
.
Steg 4 : Nu kan användaren deklarera fler variabler med PowerPoint-objektbiblioteket.
Förklara en variabel som refererar till Presentation
objektet i PowerPoint-objektbiblioteket.
Förklara en annan variabel som refererar till Slide
i PowerPoint-objektbiblioteket.
Nu ser variabeldeklarationssektionen ut i skärmbilden nedan, och användaren kan börja använda dessa variabler i sin kod.
Kodversion av denna självstudie:
Option Explicit
Sub Export_toPPT()
Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide
' here write down everything you want to do with the PowerPoint Class and objects
End Sub
Hej världen
- Öppna Visual Basic Editor (se Öppna Visual Basic Editor )
- Klicka på Infoga -> Modul för att lägga till en ny modul:
- Kopiera och klistra in följande kod i den nya modulen:
Sub hello()
MsgBox "Hello World !"
End Sub
För att uppnå :
Klicka på den gröna “play” -pilen (eller tryck på F5) i Visual Basic-verktygsfältet för att köra programmet:
Klart, du bör se följande fönster:
Komma igång med Excel-objektmodellen
Detta exempel avser att vara en försiktig introduktion till Excel Object Model för nybörjare .
- Öppna Visual Basic Editor (VBE)
- Klicka på Visa -> Omedelbart fönster för att öppna Omedelbart fönster (eller ctrl + G ):
- Följande omedelbara fönster visas längst ner på VBE:
I det här fönstret kan du testa VBA-kod direkt. Så låt oss börja, skriv in den här konsolen:
?Worksheets.
VBE har intelligens och då borde det öppna ett verktygstips som i följande figur:
Välj .Count i listan eller skriv direkt .Cout
att få:
?Worksheets.Count
- Tryck sedan på Enter. Uttrycket utvärderas och det ska returnera 1. Detta indikerar antalet kalkylblad som för närvarande finns i arbetsboken. Frågetecknet (
?
) Är ett alias för Debug.Print.
Kalkylblad är ett objekt och räkning är en metod . Excel har flera objekt ( Workbook
, Worksheet
, Range
, Chart
..) och var och en innehåller specifika metoder och egenskaper. Du kan hitta den kompletta listan med objekt i Excel VBA-referensen . Kalkylblad Objekt presenteras här .
Denna Excel VBA-referens bör bli din primära informationskälla om Excel-objektmodellen.
- Låt oss nu prova ett annat uttryck, typ (utan
?
-Tecknet):
Worksheets.Add().Name = "StackOveflow"
- Tryck enter. Detta bör skapa ett nytt kalkylblad som heter
StackOverflow.
:
För att förstå detta uttryck måste du läsa funktionen Lägg till i ovannämnda Excel-referens. Du hittar följande:
Add: Creates a new worksheet, chart, or macro sheet.
The new worksheet becomes the active sheet.
Return Value: An Object value that represents the new worksheet, chart,
or macro sheet.
Så Worksheets.Add()
skapa ett nytt kalkylblad och returnera det. Kalkylblad ( utan s ) är i sig ett objekt som kan hittas i dokumentationen och Name
är en av dess egenskaper (se här ). Det definieras som:
Worksheet.Name Property: Returns or sets a String value that
represents the object name.
Så genom att undersöka definitionerna av olika objekt kan vi förstå den här koden Worksheets.Add().Name = "StackOveflow"
.
Add()
skapar och lägger till ett nytt kalkylblad och returnera en referens till det, då vi sätter sitt namn egendom till "Stackoverflow"
Låt oss nu vara mer formella, Excel innehåller flera objekt. Dessa objekt kan bestå av en eller flera samlingar med Excel-objekt i samma klass. Det är fallet för WorkSheets
som är en samling av Worksheet
objekt. Varje objekt har vissa egenskaper och metoder som programmeraren kan interagera med.
Excel-objektmodellen hänvisar till Excel- hierarkin
Överst på alla objekt är Application
, det representerar själva Excel-instansen. Programmering i VBA kräver en god förståelse för denna hierarki eftersom vi alltid behöver en referens till ett objekt för att kunna kalla en metod eller för att ställa in / få en egenskap.
(Mycket förenklad) Excel-objektmodell kan representeras som,
Application
Workbooks
Workbook
Worksheets
Worksheet
Range
En mer detaljerad version för kalkylbladets objekt (som i Excel 2007) visas nedan,
Den fullständiga Excel-objektmodellen finns här .
Slutligen kan vissa objekt ha events
(ex: Workbook.WindowActivate
) som också ingår i Excel-objektmodellen.