Avatar billede tipsen Nybegynder
10. december 2002 - 22:23 Der er 14 kommentarer og
2 løsninger

VBA/Excel - smid array af værdier ind i et range!

Hej eksperter

Er der en nem måde at smide en stak variable ind i et range?

jeg har eks:

var1 = "Dette er en test"
var2 = 42
var3 = Now()

og vil smide dem i range("a1:a3") - hvordan gøres det pænest/hurtigst muligt?
Avatar billede tipsen Nybegynder
10. december 2002 - 22:24 #1
NB: Er klar over at det ikke er et array jeg har med at gøre!
10. december 2002 - 22:46 #2
Med 3 variable skal der 3 linier til - godt du ikke har 70....

Range("A1").Value = var1
osv.
10. december 2002 - 22:55 #3
Sub Demo()
    Dim lCount As Long
    Dim colVar As Collection
    Set colVar = New Collection

    colVar.Add "Dette er en test"
    colVar.Add 42
    colVar.Add Now()

    For lCount = 1 to colVar.Count

    Next lCount
10. december 2002 - 22:57 #4
Hovsa - der var lige en fejlbetjening.....

Public Sub Demo()
    Dim lCount As Long
    Dim colVar As Collection
    Set colVar = New Collection

    colVar.Add "Dette er en test"
    colVar.Add 42
    colVar.Add Now()

    For lCount = 1 To colVar.Count
        Cells(lCount, 1).Value = colVar(lCount)
    Next lCount
End Sub
Avatar billede bak Forsker
10. december 2002 - 23:09 #5
det er da næsten synd at det ikke er et array, for så bliver ting hurtigere og nemmere...:-)

dim var
var(1) = "Dette er en test"
var(2) = 42
var(3) = Now()
range("A1:A3")=var
Avatar billede tipsen Nybegynder
10. december 2002 - 23:11 #6
Det kan som du selv skriver nemt gøres med 3 linier - jeg havde bare en forhåbning om at det kunne gøres med noget i retning af følgende teknik på en linie:

range("a1:a3").value = array(var1, var2, var3)

Hvor array er den funktion/metode jeg leder efter... - men det kan godt være det er umuligt.
Avatar billede tipsen Nybegynder
10. december 2002 - 23:12 #7
Årsagen til at mine informationer ikke ligger i et array er, at de ikke umiddelbart er relaterede... - men det kunne godt være jeg skulle gentænke det, hvis der ikke findes en funktion til at "array-isere" eksisterende variable...
Avatar billede bak Forsker
10. december 2002 - 23:18 #8
Sorry, der gled lige noget ud...
Sub test()
Dim var(3, 0) As Variant

var(0, 0) = "Dette er en test"
var(1, 0) = 42
var(2, 0) = Now()

Range("A1:A3") = var
End Sub
Avatar billede tipsen Nybegynder
10. december 2002 - 23:29 #9
...pinligt... - den linie jeg foreslog med array() fungerer rent faktisk...

bak: hvis du også gider lægge et svar, kan I dele pointene.
Avatar billede bak Forsker
10. december 2002 - 23:45 #10
Jeg tror ikke din egen linie virker, Du vil få samme resultat i alle celler. Du er nødt til at transponerere dit array først.

Range("A1:A3") = Application.WorksheetFunction.Transpose(Array(var1, var2, var3))
Avatar billede tipsen Nybegynder
11. december 2002 - 00:59 #11
bak: Det fungerer faktisk fint uden transponering - hvorfor skulle det ikke fungere? (Har du læst noget i online-hjælpen der indikerer det modsatte eller?)
Avatar billede bak Forsker
11. december 2002 - 08:44 #12
Nej, men = array(var1, var2, var3) giver et "vandret" array og det forsøger du at tvinge ind i et lodret array (range("A1:A3)).
Dette burde betyde at du får Var1 i hele din range. Hvis din range derimod var range("A1:C1") ville det virke.
Derfor transponerer jeg, så jeg "vender" array'et
11. december 2002 - 09:02 #13
bak>> jeg mener, at Excel er fløjtende ligeglad med om du "vender" array'et eller ej!
Avatar billede bak Forsker
11. december 2002 - 09:05 #14
Nej, flemming.
Prøv lige dette lille eksempel.
Du får nu A i både A1,A2 og A3

Sub test()
Range("A1:A3") = Array("A", "B", "C")
End Sub
11. december 2002 - 09:22 #15
Point taken
Avatar billede tipsen Nybegynder
11. december 2002 - 12:10 #16
sorry - jeg har rent faktisk også skrevet forkert ovenfor - jeg smider det rent faktisk ind i et vandret array - så det er jo nok derfor jeg ikke oplever problemer.
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
Kategori
Kurser inden for grundlæggende programmering

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