Avatar billede Docthomassen Juniormester
15. august 2021 - 21:38 Der er 1 kommentar og
1 løsning

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
Avatar billede claes57 Ekspert
16. august 2021 - 10:48 #1
Avatar billede Docthomassen Juniormester
16. august 2021 - 20:01 #2
Hej Claes

Tak for input, men redim løser ikke det egentlige problem, nemlig at få indlæst det binære skema i et array fremfor i et sheet.
Det er vist et temmelig kompliceret arbejde, selvom det burde være lige ud af landevejen.

Anders
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester