Avatar billede no-shit Nybegynder
30. april 2003 - 14:13 Der er 5 kommentarer og
1 løsning

Word til excel (MAKRO)

Jeg har tidligere fået hjælp til at lave en makro, som skulle lave labels for mig.

Det den skal gøre er at få:

Linie 1
Linie 2
Linie 3
Linie 4
Linie 5
osv.

til at stå sådan:

Linie 1    Linie 2    Linie 3      Linie 4    Linie 5
Linie 6    osv.

Altså så jeg kan flette udfra det.


Problemet med makroen er at den kun tager 4 linier med og at den springer nogle over. F.eks. kommer det til at se sådan ud:

Linie 1    Linie 2    Linie 3      Linie 4    Linie 5
Linie 7    Linie 8

Der er altid 5 linier i hver adresse.

Sub TransponerArray()
Dim lCounter As Long
Dim lLastRow As Long
Dim lTest As Long
Dim lCounter2 As Long
Dim vOldArray
Dim vNewArray

Const sInsertHere As String = "B1"
Const lFirstRow As Long = 1
Const lRecSize As Long = 6 'Recordsize

lLastRow = Range("A65536").End(xlUp).Row
lLastRow = ((lLastRow \ lRecSize) + 1) * lRecSize
vOldArray = Range("a" & lFirstRow & ":a" & lLastRow)
ReDim vNewArray((lLastRow \ lRecSize) + 1, lRecSize)
For lCounter = 1 To lLastRow Step lRecSize
    lTest = lTest + 1
        For lCounter2 = 1 To lRecSize
            vNewArray(lTest, lCounter2) = vOldArray(lCounter + lCounter2 - 1, 1)
        Next
Next
Range(sInsertHere).Resize(lTest, lRecSize - 1) = vNewArray

Set vOldArray = Nothing
Set vNewArray = Nothing
End Sub

Har virkelig brug for et hurtigt svar????
Avatar billede bak Forsker
30. april 2003 - 15:42 #1
Har du ingen tomme linie mellem dine adresser ?
Avatar billede no-shit Nybegynder
30. april 2003 - 15:51 #2
Nej, men jeg kan godt lave det uden det vil være slemt.
Avatar billede bak Forsker
30. april 2003 - 15:51 #3
Sub TransponerArray2()
Dim lCounter As Long
Dim lLastRow As Long
Dim lTest As Long
Dim lCounter2 As Long
Dim vOldArray
Dim vNewArray

Const sInsertHere As String = "B1"
Const lFirstRow As Long = 1
Const lRecSize As Long = 5 'Recordsize

lLastRow = Range("A65536").End(xlUp).Row
lLastRow = ((lLastRow \ lRecSize) + 1) * lRecSize
vOldArray = Range("a" & lFirstRow & ":a" & lLastRow)
ReDim vNewArray((lLastRow \ lRecSize) + 1, lRecSize)
For lCounter = 1 To lLastRow Step lRecSize
    lTest = lTest + 1
        For lCounter2 = 1 To lRecSize
            vNewArray(lTest, lCounter2) = vOldArray(lCounter + lCounter2 - 1, 1)
        Next
Next
Range(sInsertHere).Resize(lTest + 1, lRecSize + 1) = vNewArray

Set vOldArray = Nothing
Set vNewArray = Nothing
End Sub
Avatar billede bak Forsker
30. april 2003 - 15:52 #4
Behøves ikke, bare test denne her
Avatar billede no-shit Nybegynder
01. maj 2003 - 09:04 #5
Skide godt... Viker bare. Tak. Nu bliver sekræteren sgu glad :-D
Avatar billede bak Forsker
01. maj 2003 - 09:19 #6
Tak for points, Godt at vi kan gøre nogen glade :-)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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