Funktioner för matrishantering

 

Här demonstreras tre generella funktioner vilka kan användas när vi arbetar med matriser i VBA.


Funktion för att erhålla antal dimensioner

 

Option Explicit  

Function AntalDim(Arr As Variant) As Long

   '© 2004 Alla rättigheter XL-Dennis

   Dim i As Long

    On Error Resume Next  

   Do

      i = UBound(Arr, AntalDim + 1)

      If Err Then Exit Do

      AntalDim = AntalDim + 1

   Loop  

End Function

 

Sub Test()

   Dim lnArray() As Long

 

   ReDim lnArray(1 To 5, 1 To 10)

 

   MsgBox AntalDim(lnArray)  

End Sub

 

Funktion för att byta ut värden

I nedanstående Test-procedur ersätts det tredje värdet i matrisen (6) med värdet 100.

Option Explicit  

Function InfogaArr(Arr As Variant, Index As Long, Varde As Variant) As Long

   '© 2004 Alla rättigheter XL-Dennis

   Dim i As Long

 

   For i = UBound(Arr) - 1 To Index Step -1

      Arr(i + 1) = Arr(i)

   Next i

 

   Arr(Index) = Varde  

End Function

 

Sub Test()

   Dim lnArray(1 To 5) As Long

   Dim i As Long

 

   For i = 1 To 5

      lnArray(i) = i * 2

   Next i

 

   InfogaArr lnArray, 3, 100

 

   For i = 1 To 5

      Debug.Print lnArray(i)

   Next i

 End Sub

 

Ta bort värden

I Test-proceduren nedan tas det tredje värdet (6) bort och det sista värdet blir följaktligen 0.

Option Explicit  

Function TaBortArr(Arr As Variant, Index As Long) As Long

   '© 2004 Alla rättigheter XL-Dennis

   Dim i As Long

 

   For i = Index To UBound(Arr) - 1

      Arr(i) = Arr(i + 1)

   Next i

 

   Arr(UBound(Arr)) = Empty  

End Function

 

Sub Test()

   Dim lnArray(1 To 5) As Long

   Dim i As Long

 

   For i = 1 To 5

      lnArray(i) = i * 2

   Next i

 

   TaBortArr lnArray, 3

 

   For i = 1 To 5

      Debug.Print lnArray(i)

   Next i

 End Sub