Sammendrag
Denne artikkelen inneholder eksempelprosedyrer for Microsoft Visual Basic for Applications som du kan bruke til å arbeide med flere typer matriser.
Mer informasjon
Microsoft tilbyr programmeringseksempler bare for illustrasjon, uten garanti enten uttrykt eller underforstått. Dette omfatter, men er ikke begrenset til, de underforståtte garantiene om salgbarhet eller egnethet til et bestemt formål. Denne artikkelen antar at du er kjent med programmeringsspråket som demonstreres, og med verktøyene som brukes til å opprette og feilsøke prosedyrer. Microsoft kundestøtteteknikere kan bidra til å forklare funksjonaliteten til en bestemt prosedyre, men de vil ikke endre disse eksemplene for å gi ekstra funksjonalitet eller konstruere prosedyrer for å oppfylle dine spesifikke krav. OBS! I Visual Basic for Applications prosedyrer er ordene etter apostrofen (') kommentarer.
Fylle en matrise og deretter kopiere den til et regneark
-
Åpne en ny arbeidsbok, og sett inn et Visual Basic-modulark.
-
Skriv inn følgende kode på modularket.
Sub Sheet_Fill_Array() Dim myarray As Variant myarray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) Range("a1:a10").Value = Application.Transpose(myarray) End Sub
-
Velg Ark1.
-
Pek på Makro på Verktøy-menyen, og klikk deretter Makroer.
-
Klikk Sheet_Fill_Array i makrodialogboksen, og klikk deretter Kjør.
Slik henter du verdier fra et regneark og fyller matrisen
-
Skriv inn verdier i Ark1 i celle A1:A10.
-
Skriv inn følgende kode på et Visual Basic-modulark:
Sub from_sheet_make_array() Dim thisarray As Variant thisarray = Range("a1:a10").Value counter = 1 'looping structure to look at array While counter <= UBound(thisarray) MsgBox thisarray(counter, 1) counter = counter + 1 Wend End Sub
-
Velg Ark1.
-
Pek på Makro på Verktøy-menyen, og klikk deretter Makroer.
-
Klikk from_sheet_make_array i makrodialogboksen, og klikk deretter Kjør.
Sende og motta en matrise
-
Skriv inn følgende kode på et modulark:
Sub pass_array() Dim thisarray As Variant thisarray = Selection.Value receive_array (thisarray) End Sub Sub receive_array(thisarray) counter = 1 While counter <= UBound(thisarray) MsgBox thisarray(counter, 1) counter = counter + 1 Wend End Sub
-
Velg Ark1, og uthev området A1:A10.
-
Pek på Makro på Verktøy-menyen, og klikk deretter Makroer.
-
Klikk pass_array i makrodialogboksen, og klikk deretter Kjør.
Sammenligne to matriser
-
Opprett to navngitte områder på Ark1. Gi navn til ett område1 og det andre området2.
Du kan for eksempel utheve celleområdet A1:A10 og gi det navnet område1. uthev celleområdet B1:B10 og gi det navnet område2. -
Skriv inn følgende kode på modularket.
Sub compare_two_array() Dim thisarray As Variant Dim thatarray As Variant thisarray = Range("range1").Value thatarray = Range("range2").Value counter = 1 While counter <= UBound(thisarray) x = thisarray(counter, 1) y = thatarray(counter, 1) If x = y Then MsgBox "yes" Else MsgBox "no" End If counter = counter + 1 Wend End Sub
-
Velg Ark2.
-
Pek på Makro på Verktøy-menyen, og klikk deretter Makro.
-
Klikk compare_two_array i makrodialogboksen, og klikk deretter Kjør.
Du vil se én meldingsboks for hver sammenligning.
Fylle en dynamisk matrise
-
Skriv inn følgende kode på et modulark:
Sub fill_array() Dim thisarray As Variant number_of_elements = 3 'number of elements in the array 'must redim below to set size ReDim thisarray(1 To number_of_elements) As Integer 'resizes this size of the array counter = 1 fillmeup = 7 For counter = 1 To number_of_elements thisarray(counter) = fillmeup Next counter counter = 1 'this loop shows what was filled in While counter <= UBound(thisarray) MsgBox thisarray(counter) counter = counter + 1 Wend End Sub
-
Pek på Makro på Verktøy-menyen, og klikk deretter Makroer.
-
Klikk fill_array i makrodialogboksen, og klikk deretter Kjør.
OBS! Hvis du endrer variabelen number_of_elements, bestemmes størrelsen på matrisen.