Avatar billede morfer Nybegynder
23. maj 2006 - 19:22 Der er 7 kommentarer og
1 løsning

tilføje _ 2 steder i tekst og samtidigt slette

Jeg har en Macro som i kolonne A indsætter noget tekst i starten af noget eksisterende tekst.
Den vil jeg meget gerne udbygge til at kunne indsætte _ efter 8 karakter, slette den 9 karakter hoppe en frem og indsætte en _ lige efter.

Macro som den er nu:
Sub Makro1()
    Dim c As Range
    For Each c In Application.Intersect(Worksheets("Ark1").UsedRange, Worksheets("Ark1").Range("A:A"))
        c.Value = "XXYY2_" & UCase(c.Value)
    Next
End Sub

ex: tekst som den er nu før macro køres.
djsblabd
ex: tekst som den er nu efter macro køres.
XXYY2_DJSBLABD

ex: tekst som den skal være efter opgaven er løst.
XXYY2_DJ_B_LABD

Måske lidt vildt med point men det haster meget for mig og jeg håber inderligt på hurtig hjælp.
Avatar billede kabbak Professor
23. maj 2006 - 19:44 #1
Sub Makro2()
    Dim c As Range
    For Each c In Application.Intersect(Worksheets("Ark1").UsedRange, Worksheets("Ark1").Range("A:A"))
        c.Value = Left(c.Value, 8) & "_" & Mid(c.Value, 9, 1) & "_" & Right(c.Value, Len(c.Value) - 10)
    Next
End Sub
Avatar billede mrjh Novice
23. maj 2006 - 19:58 #2
Udskift c.Value = "XXYY2_" & UCase(c.Value) med

c.Value = "XXYY2_" & UCase(Left(c, 2) & "_" & Mid(c, 4, 1) _
        & "_" & Mid(c, 5, 10))
Avatar billede kabbak Professor
23. maj 2006 - 19:58 #3
Der var en lille fejl, den skal se sådan ud

Sub Makro2()
    Dim c As Range
    For Each c In Application.Intersect(Worksheets("Ark1").UsedRange, Worksheets("Ark1").Range("A:A"))
        c.Value = Left(c.Value, 8) & "_" & Mid(c.Value, 10, 1) & "_" & Right(c.Value, Len(c.Value) - 10)
    Next
End Sub


du kan også bygge dem sammen, så den gør begge dele samtidig.

Sub Makro3()
    Dim c As Range
    For Each c In Application.Intersect(Worksheets("Ark1").UsedRange, Worksheets("Ark1").Range("A:A"))
        c.Value = "XXYY2_" & UCase(c.Value)
        c.Value = Left(c.Value, 8) & "_" & Mid(c.Value, 10, 1) & "_" & Right(c.Value, Len(c.Value) - 10)
    Next
End Sub
Avatar billede kabbak Professor
23. maj 2006 - 20:01 #4
Mrjh > tekstlængden er ikke kendt på forhånd, så du kan ikke bruge
Mid(c, 5, 10))
Avatar billede mrjh Novice
23. maj 2006 - 20:05 #5
Nej det har du ret i. Overvejede at sætte den til 100 :-) men din er smartere.
Avatar billede morfer Nybegynder
23. maj 2006 - 20:06 #6
Jeg sad lige og testede og vil selvfølgelig teste igen.

Hvor er du sej kabbak. Jeg skulle ellers lige til at spørge om man kunne bygge dem sammen..
Avatar billede morfer Nybegynder
23. maj 2006 - 20:09 #7
SUPER SEJ kabbak
Avatar billede kabbak Professor
23. maj 2006 - 20:13 #8
helt sammenbygget kan du spare en linie


Sub Makro4()
    Dim c As Range
    For Each c In Application.Intersect(Worksheets("Ark1").UsedRange, Worksheets("Ark1").Range("A:A"))
      c.Value = "XXYY2_" & UCase(Left(c, 2) & "_" & Mid(c.Value, 4, 1) & "_" & Right(c.Value, Len(c.Value) - 4))
    Next
End Sub
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