Avatar billede Paw Winther Mester
10. juli 2018 - 09:47 Der er 6 kommentarer og
1 løsning

VBA for "Tekst til kolonner", gældende markeret område.

Jeg har brug for at man i et ark kan markere en række data i et vilkårligt område, hvorefter en makro kan køre "Tekst til kolonner" funktionen for det markeret område, og indsætte værdierne fra det område og efterfølgende kolonner.

Jeg har pr. skrevet nedenstående VBA

    Selection.TextToColumns Destination:=Range("S5"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 4), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 2), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1)), _
        TrailingMinusNumbers:=True
End Sub

[b]Mit problem er bare at den altid indsætter dataen fra celle S5 og ned. Hvor hvis jeg f.eks. havde markeret W5 til W25, skulle den have indsat det i W5 i stedet. Hvordan får jeg den til at vælge den rigtige celle?[/b}
Avatar billede finb Ekspert
10. juli 2018 - 09:50 #1
Transpose
eller
Transponer
Avatar billede Paw Winther Mester
10. juli 2018 - 10:20 #2
Nej det er ikke den funktion jeg leder after, funktionen hedder "Tekst til kolonner", min udfordring er bare at jeg ønsker at lave en VBA i stedet der gør det samme, så så kan bruges på forskellige placeringer i dokumentet.

Den data jeg har i en kolonne er altid delt med koma, og kunne se ud som nedenstående:
Celle W5 = "Dato","Bilagsnr.","Medarb.- nr.",...
Celle W6 = "Dato","Bilagsnr.","Medarb.- nr.",...
Celle W7 = "Dato","Bilagsnr.","Medarb.- nr.",...
Celle W8 = "Dato","Bilagsnr.","Medarb.- nr.",...
Celle W9 = "Dato","Bilagsnr.","Medarb.- nr.",...

Hvad jeg har brug for er, hvad jeg i min VBA skal skrive efter "Destination", for at den kan vælge den aktuelt markeret destination i stedet for altid "S5". Altså har jeg f.eks. markeret data i cellerne W5 til W9, så skal den indsætte værdierne fra celle "W5" i stedet for "S5".

    Selection.TextToColumns Destination:=Range("S5"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 4), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 2), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1)), _
        TrailingMinusNumbers:=True
End Sub
Avatar billede kim1a Ekspert
10. juli 2018 - 10:40 #3
I stedet for at definere cellen med en adresse skal du bruge en variabel.

Noget i retning af at

Dim startcelle as address
startcelle = activecell.address

Prøv at google lidt omkring dette.
Avatar billede Paw Winther Mester
10. juli 2018 - 16:36 #4
Syntes ikke lige at kunne se mig frem til løsningen. Jeg er stadig begynder i VBA programmering, så hvordan vil koden umiddelbart se ud med dit forslag?
Avatar billede kim1a Ekspert
10. juli 2018 - 19:39 #5
Indsæt dette:

Dim startcelle As Variant

startcelle = ActiveCell.Address

Så skriver du startcelle i stedet for "S5" i det du markerede - nb uden anførselstegn i parantesen.
Avatar billede Paw Winther Mester
11. juli 2018 - 08:41 #6
Hej Kim

Jeg takker for dit svar, det var lige det jeg ledte efter.

Dog valgte jeg blot at skrive "ActiveCell.Address" i min formel, i stedet for først at definere "Startcelle = ActiveCell.Address" for så at bruge "Startcelle" i min formel.

Det ser ud til at virke på samme måde :)
Avatar billede kim1a Ekspert
11. juli 2018 - 09:08 #7
Ja, det er fint - jeg har blot lært at der er en uskik ikke at have variabler og definere dem - men for os amatør programmører gør det nok ikke alverden.
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