Sammanfattning
Den här artikeln innehåller exempel på Microsoft Visual Basic for Applications-procedurer som du kan använda för att arbeta med flera typer av matriser.
Mer information
Microsoft tillhandahåller endast programmeringsexempel för illustrationer, utan garantier som antingen uttrycks eller är underförstådda. Detta omfattar, men är inte begränsat till, de underförstådda garantierna om säljbarhet eller lämplighet för ett visst ändamål. Den här artikeln förutsätter att du är bekant med programmeringsspråket som demonstreras och med de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till att förklara funktionaliteten i en viss procedur, men de ändrar inte de här exemplen för att tillhandahålla ytterligare funktioner eller konstruera procedurer för att uppfylla dina specifika krav. Obs! I Visual Basic for Applications-procedurer är orden efter apostrof (') kommentarer.
Så här fyller du i en matris och sedan kopierar den till ett kalkylblad
-
Öppna en ny arbetsbok och infoga ett Visual Basic-modulblad.
-
Skriv följande kod på modulbladet.
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
-
Välj Blad1.
-
Peka på Makro på Verktyg-menyn och klicka sedan på Makron.
-
Klicka på Sheet_Fill_Array i dialogrutan Makro och klicka sedan på Kör.
Så här tar du värden från ett kalkylblad och fyller matrisen
-
Skriv värden på Blad1 i cellerna A1:A10.
-
Skriv följande kod på ett Visual Basic-modulblad:
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
-
Välj Blad1.
-
Peka på Makro på Verktyg-menyn och klicka sedan på Makron.
-
Klicka på from_sheet_make_array i dialogrutan Makro och klicka sedan på Kör.
Så här skickar och tar du emot en matris
-
Skriv följande kod på ett modulblad:
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
-
Välj Blad1 och markera området A1:A10.
-
Peka på Makro på Verktyg-menyn och klicka sedan på Makron.
-
Klicka på pass_array i dialogrutan Makro och klicka sedan på Kör.
Så här jämför du två matriser
-
Skapa två namngivna områden på Blad1. Namnge ett område1 och det andra området2.
Markera till exempel cellområdet A1:A10 och ge det namnet område1; markera cellområdet B1:B10 och ge det namnet område2. -
Skriv följande kod på modulbladet.
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
-
Välj Blad2.
-
Peka på Makro på Verktyg-menyn och klicka sedan på Makro.
-
Klicka på compare_two_array i dialogrutan Makro och klicka sedan på Kör.
Du ser en meddelanderuta för varje jämförelse.
Så här fyller du en dynamisk matris
-
Skriv följande kod på ett modulblad:
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
-
Peka på Makro på Verktyg-menyn och klicka sedan på Makron.
-
Klicka på fill_array i dialogrutan Makro och klicka sedan på Kör.
Obs! Om du ändrar variabeln "number_of_elements" bestämmer du storleken på matrisen.