VBA: Skriv til array i stedet for til sheet
Jeg ønsker at evaluere mulige kombinationer af flere udarbejdede vagtskemaer i en given måned. Dette gøres ved at oprette binært skema med mulige kombinationer.F.eks:
001 001 001
001 001 010
001 001 100
001 010 001
001 010 010
001 010 100
.
.
.
100 100 010
100 100 100
Selve formlen har jeg nu fået styr på og kan findes på
https://stackoverflow.com/questions/35246520/dynamic-for-loops-in-vba
Mit problemet er at jeg ikke kan finde ud af at omsætte formlen til indlæsning i et array, fremfor at blive indlæst på et sheet. Jeg ønsker at lægge det i et array for at gøre evalueringen hurtigere.
Alene dét, at få dimensioneret et passende array er vanskeligt, for det ser ud til at antallet af rækker ikke er defineret på forhånd.
Er der nogen, som kan hjælpe?
Koden kan ses herunder:
Sub matrix()
Dim arr() As Variant
Dim totrow As Long
Dim j As Long
Dim t As Long
Dim p As Long
Dim x As Long
Dim ws As Worksheet
Set ws = Sheets("Ark1")
'Set your array of numbers
arr = Array(2, 3, 4)
'If you want to refer to ranges on Sheet1 use:
'arr = Array(ws.Range("T1"), ws.Range("U1"), ws.Range("V1"))
totrow = 1
For j = LBound(arr) To UBound(arr)
totrow = totrow * arr(j)
x = x + arr(j)
Next j
ws.Range(ws.Cells(1, 1), ws.Cells(totrow, x)).Value = 0
p = 1
For j = UBound(arr) To LBound(arr) Step -1
For t = 1 To totrow Step 1
For i = 1 To arr(j)
ws.Range(ws.Cells(t, x - arr(j) + i), ws.Cells(t + p - 1, x - arr(j) + i)).Value = 1
t = t + p
Next i
t = t - 1
Next t
p = p * arr(j)
x = x - arr(j)
Next j
End Sub