Avatar billede engholm1977 Nybegynder
07. juni 2011 - 09:30 Der er 10 kommentarer og
1 løsning

Automatisk indrykning af tekst

Hej

Jeg har tekst i kolonne B og en værdi mellem 1 og 4 i kolonne C.
Kan det lade sig gøre at teksten i kolonne B automatisk laver indrykning med det antal tegn, der tastes i kolonne C?


Mvh. Christina
07. juni 2011 - 10:28 #1
Tja...
Du kan i kolonne D skrive =REPT(" ";C1) &B1 - det giver dig indryk.
Og så kan du skjule din kolonne B.

Bemærk formlen er fra en engelsk excel, men den danske funktion hedder nok ca. det samme.
Avatar billede engholm1977 Nybegynder
07. juni 2011 - 10:49 #2
Indrykningen bliver ikke lige så stor ved at lave mellemrum, som når man bruger indrykningsfunktionen under "Formater celler", og så får jeg ikke det overblik jeg gerne vil have.

Jeg havde mere tænkt i retning af en makro, som automatisk indrykker teksten i kolonne B når der tastes et tal i kolonne C.
07. juni 2011 - 10:51 #3
Tja - det kan man også, men du kunne også vælge

=REPT("  ";C1) &B1

Så sparer du bøvlet med at kode en makro
07. juni 2011 - 10:56 #4
En mulig makro kunne se sådan her ud

Sub indryk()
    Dim c As Range
    For Each c In Range("B1", Range("B1").End(xlDown)).Cells
        If IsNumeric(c.Offset(0, 1).Value) Then
            c.InsertIndent c.Offset(0, 1).Value
        End If
    Next
End Sub

Den virker på alle tekster i kolonne B med mindre der er huller i datasættet (altså tomme celler i kolonne B)
Avatar billede engholm1977 Nybegynder
07. juni 2011 - 11:07 #5
Den fejler på den sidste linje:
  c.InsertIndent..........
07. juni 2011 - 11:11 #6
Hvilken fejl?
Og hvilken version af Excel?
Avatar billede engholm1977 Nybegynder
07. juni 2011 - 11:16 #7
Excel 2007

Application-defined or object-defined error
07. juni 2011 - 11:22 #8
Har du tal større end 15 i kolonne c?
Send mig evt arket
07. juni 2011 - 11:35 #9
Du kan opdatere med


Sub indryk()
    Dim c As Range
    For Each c In Range("B1", Range("B1").End(xlDown)).Cells
        If IsNumeric(c.Offset(0, 1).Value) Then
            If c.Offset(0, 1).Value <= 15 Then
                If c.IndentLevel > 0 Then c.InsertIndent -c.IndentLevel
                c.InsertIndent c.Offset(0, 1).Value
            End If
        End If
    Next
End Sub


Så er koden robust over for tal over 15 og kan køres flere gange.
Avatar billede engholm1977 Nybegynder
07. juni 2011 - 12:12 #10
Det virker stadig ikke. Sender filen til den mail adresse der står på din hjemmeside.
Avatar billede engholm1977 Nybegynder
07. juni 2011 - 12:53 #11
Her var løsningen:

Dim c As Range
    For Each c In Range("B1", Range("B1").End(xlDown)).Cells
        If IsNumeric(c.Offset(0, 1).Value) Then
            If c.Offset(0, 1).Value <= 15 And c.Offset(0, 1).Value > 0 Then
                If c.IndentLevel > 0 Then c.InsertIndent -c.IndentLevel
                c.InsertIndent c.Offset(0, 1).Value
            End If
        End If
    Next
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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