Avatar billede larskoch Nybegynder
20. oktober 2009 - 14:01 Der er 8 kommentarer og
1 løsning

Indsæt kolonne

Hej!

Har brug for en funktionalitet (evt. vba) hvor der kan indsættes en ny kolonne et sted i arket hvor værdien i feltet er teksten "TOM".

D.v.s.hvis første felt hvor værdien er "TOM" er i felt AA5 - så skal der indsættes en ny tom kolonne.
Avatar billede jkrons Professor
20. oktober 2009 - 14:23 #1
Hvor skal den tomme kolonne indsættes, fæør eller efter TOM?

Kan TOM stå overalt i arket? Kan TOM stå flere gange? Hvis Ja, skal arket så læses i rækker eller kolonner; altså er TOM C43005 før TOM i D4?
Avatar billede larskoch Nybegynder
20. oktober 2009 - 14:42 #2
Hej jkrons!

Den skal kunne sætte en ny kolonne ind umiddelbart før første forekomst af værdien "TOM" i en celle. Dette kunne godt være celle aa5....

Der er flere forekomster af værdien "TOM" men disse vil altid forekomme i efterfølgende kolonner....

M.v.h. Lars
Avatar billede jkrons Professor
20. oktober 2009 - 14:53 #3
Hej Lars

Når jeg spørger er det fordi, at når man bruger VBA vil den som standard læse alle kolonner i en bestemt række, før den læser næste række. Det vil sige, at hvis du har TOM stående i AA5 vil dette blive opfattet som den første, selv om der står en tom i A6.
Avatar billede jkrons Professor
20. oktober 2009 - 14:54 #4
Dette er man nødt til at tage højde for i programmeringen, hvis kolonne er vigtigere end række.
Avatar billede jkrons Professor
20. oktober 2009 - 14:59 #5
Jeg skal lige til møde et pare timer, men hvis du fortæller mig om A6 kommer før AA5 eller omvendt, skal jeg lave en løsning til dig, når jeg kommer tilbage.
Avatar billede jkrons Professor
20. oktober 2009 - 18:21 #6
Her er én af hver.

Sub InsertNewColumnperRo()
    For Each c In ActiveSheet.UsedRange.Cells
        If UCase(c.Value) = "TOM" Then
            c.EntireColumn.Select
            Selection.Insert Shift:=xlToRight
            Exit For
        End If
    Next c
    ActiveCell.Select
End Sub

Denne indsætter en ny kolonne foran den første "TOM", hvis rækker er vigtigere end kolonner. Har man "TOM" i cellerne B6 og D2 vil den tomme blive indsat før D-kolonnen.

Sub InsertNewColumnperColumn()
    Set rng = ActiveSheet.UsedRange.Cells
        For c = 1 To rng.Columns.Count
            For r = 1 To rng.Rows.Count
                If UCase(Cells(r, c).Value) = "TOM" Then
                    Cells(r, c).EntireColumn.Select
                    Selection.Insert Shift:=xlToRight
                    ActiveCell.Select
                    Exit Sub
                End If
            Next r
        Next c
End Sub

Denne indsætter en ny kolonne foran "TOM", hvis kolonner er vigtigere end rækker. Har man "TOM"  cellerne B6 og D2 vil den tomme blive indsat før B-kolonnen.
Avatar billede larskoch Nybegynder
21. oktober 2009 - 07:29 #7
Hej!

Havde selv lige et møde og så var det hjem - og var så ikke lige på derhjemmefra derfor dette sene svar. AA5 kommer før a6...
Jeg tester lige dine koder igennem og vender så tilbage.
Avatar billede larskoch Nybegynder
21. oktober 2009 - 07:33 #8
Hej igen!

Så er det testet og koden (den første) virker efter hensigten.
Mange tak for hjælpen - laver du lige et svar så jeg kan tildele point.
M.v.h. Lars
Avatar billede jkrons Professor
21. oktober 2009 - 08:51 #9
Her et svar :-)
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