Excel VBA-arrayer: Vad är, hur man använder och typer av arrayer i VBA

Vad är VBA Array?

En array definieras som en minnesplats som kan lagra mer än ett värde. Alla värden måste vara av samma datatyp. Låt oss säga att du vill lagra en lista över dina favoritdrycker i en enda variabel, du kan använda VBA-array för att göra det.

Genom att använda en array kan du referera till de relaterade värdena med samma namn. Du kan använda ett index eller ett abonnemang för att skilja dem åt. De individuella värdena hänvisas till som elementen i Excel VBA-matrisen. De är sammanhängande från index 0 till det högsta indexvärdet.

Denna handledning förutsätter att du använder Microsoft excel version 2013. Kunskapen gäller fortfarande andra versioner av Microsoft Excel likaså.

Vilka är fördelarna med arrayer?

Följande är några av fördelarna med VBA-arrayfunktionen

  1. Gruppera logiskt relaterade data tillsammans – låt oss säga att du vill lagra en lista med elever. Du kan använda en enda arrayvariabel som har separata platser för elevkategorier, dvs. kinderträdgård, lågstadie, gymnasieskola, gymnasieskola, etc.
  2. Arrayer gör det enkelt att skriva underhållbar kod. För samma logiskt relaterade data låter den dig definiera en enskild variabel, istället för att definiera mer än en variabel.
  3. Bättre prestanda – när en array väl har definierats går det snabbare att hämta, sortera och ändra data.

Typer av arrayer i VBA

VBA stöder två typer av arrayer nämligen;

  • Statisk – Dessa typer av arrayer har ett fast förutbestämt antal element som kan lagras. Man kan inte ändra storleken på datatypen för en statisk array. Dessa är användbara när du vill arbeta med kända enheter som antal dagar i veckan, kön etc.Till exempel: Dim ArrayMonth(12) Som sträng
  • Dynamisk – Dessa typer av arrayer har inte ett fast förutbestämt antal element som kan lagras. Dessa är användbara när du arbetar med enheter som du inte kan förbestämma antalet.Till exempel: Dim ArrayMonth() Som variant

Syntax för att deklarera arrayer

Statiska arrayer

Syntaxen för att deklarera STATISK arrays är som följer:

Dim arrayName (n) as datatype

HÄR,

Koda Handling
Dim arrayName (n) datatyp
  1. Den deklarerar en arrayvariabel som heter arrayName med storleken n och datatyp. Storlek hänvisar till antalet element som arrayen kan lagra.

Dynamiska matriser

Syntaxen för att deklarera DYNAMISK arrays är som följer:

Dim arrayName() as datatype
ReDim arrayName(4)

HÄR,

Koda Handling
Dim arrayName () datatyp
  1. Den deklarerar en arrayvariabel som heter arrayName utan att ange antalet element
ReDim arrayName(4)
  1. Den anger arraystorleken efter att arrayen har definierats.

Matrisdimensioner

En array kan vara endimensionell, tvådimensionell eller flerdimensionell.

  • En dimension: I den här dimensionen använder arrayen endast ett index. Till exempel ett antal personer i varje ålder.
  • Två dimensioner: I den här dimensionen använder arrayen två index. Till exempel ett antal elever i varje klass. Det kräver antal klasser och elevnummer i varje klass
  • Flerdimensionell: I den här dimensionen använder arrayen mer än två index. Till exempel temperaturer under dagtid. (30, 40, 20).

Hur man använder Array i Excel VBA

Vi kommer att skapa en enkel applikation. Denna applikation fyller ett Excel-ark med data från en matrisvariabel. I detta VBA Array-exempel kommer vi att göra följande saker.

  • Skapa en ny Microsoft Excel-arbetsbok och spara den som Excel Macro-Enabled Workbook (*.xlsm)
  • Lägg till en kommandoknapp i arbetsboken
  • Ställ in namn och bildtextegenskaper för kommandoknappen
  • Programmering av VBA som fyller Excel-arket

Låt göra denna övning steg för steg,

Steg 1 – Skapa en ny arbetsbok

  1. Öppet Microsoft excel
  2. Spara den nya arbetsboken som VBA Arrays.xlsm

Steg 2 – Lägg till en kommandoknapp

Obs: Det här avsnittet förutsätter att du är bekant med processen att skapa ett gränssnitt i Excel. Om du inte är bekant, läs handledningen VBA Excel Form Control & ActiveX Control. Det kommer att visa dig hur du skapar gränssnittet

  1. Lägg till en kommandoknapp på arket

Använd Array i Excel VBA

  1. Ställ in egenskapen name till cmdLoadBeverages
  2. Ställ in bildtextegenskapen till Ladda drycker

Ditt GUI bör nu vara följande

Använd Array i Excel VBA

Steg 3 – Spara filen

  1. Klicka på knappen Spara som
  2. Välj Excel Macro-Enabled Workbook (*.xlsm) som visas i bilden nedan

Använd Array i Excel VBA

Steg 4 – Skriv koden

Vi kommer nu att skriva koden för vår ansökan

  1. Högerklicka på knappen Ladda drycker och välj visa kod
  2. Lägg till följande kod till klickhändelsen för cmdLoadBeverages
Private Sub cmdLoadBeverages_Click()
    Dim Drinks(1 To 4) As String
     
    Drinks(1) = "Pepsi"
    Drinks(2) = "Coke"
    Drinks(3) = "Fanta"
    Drinks(4) = "Juice"
     
    Sheet1.Cells(1, 1).Value = "My Favorite Beverages"
    Sheet1.Cells(2, 1).Value = Drinks(1)
    Sheet1.Cells(3, 1).Value = Drinks(2)
    Sheet1.Cells(4, 1).Value = Drinks(3)
    Sheet1.Cells(5, 1).Value = Drinks(4)
End Sub

HÄR,

Koda Handling
Dim drycker (1 till 4) som sträng
  • Den deklarerar en arrayvariabel som heter Drinks. Det första arrayindexet är 1 och det sista arrayindexet är 4.
Drinks(1) = "Pepsi"
  • Tilldelar värdet Pepsi till det första arrayelementet. Den andra liknande koden gör samma sak för de andra elementen i arrayen.
Sheet1.Cells(1, 1).Value = "Mina favoritdrycker."
  • Skriver värdet Mina favoritdrycker i celladress A1. Blad1 refererar till arket och Cells(1,1) refererar till rad nummer 1 och kolumn 1 (B)
Blad1.Celler(2, 1).Värde = Drycker(1)
  • Skriver värdet på matriselementet med index 1 till rad nummer två i kolumn 1

Testar vår applikation

Välj utvecklarfliken och se till att knappen Designläge är "av". Indikatorn är att den kommer att ha en vit bakgrund och inte en färgad (grönaktig) bakgrund. (Se bild nedan)

Testa en applikation i Excel VBA

Klicka på knappen Ladda drycker

Du kommer att få följande resultat

Testa en applikation i Excel VBA

Ladda ner Excel som innehåller ovanstående kod

Ladda ner ovanstående Excel-kod

Sammanfattning

  1. En array är en variabel som kan lagra mer än ett värde
  2. Excel VBA stöder statiska och dynamiska arrayer
  3. Arrayer gör det enkelt att skriva underhållbar kod jämfört med att deklarera många variabler för data som är logiskt relaterade.