01. december 2014 - 11:20Der er
6 kommentarer og 1 løsning
Automatisk tekstombrydning til x antal tegn.
jeg får løbende en række tekststrenge af diverse størrelser og længder, som jeg skal taste ind i et web-modul. Det er ikke muligt at omkode web-modulet.
men er et muligt måske at lave en fix ting, der gør at jeg kan indtaste i en celle og så får jeg så leveret den samme tekst i en anden celle blot ombrudt i linier af 60 tegn (ombrudt for hvert hele ord naturligvis).
Sub LineShift() Dim C As Range Dim T As String Dim Ttemp As String For Each C In Range("D1:D12").Cells 'her vælges området med oprindelig tekst Ttemp = C T = "" Do Until Len(Ttemp) = 0 If Len(C) < 60 Then T = T & Ttemp Ttemp = "" Else For x = 60 To 1 Step -1 If Mid(Ttemp, x, 1) = " " Then y = x GoTo A: End If Next A: T = T & Left(Ttemp, y) Ttemp = Mid(Ttemp, y + 1, 9999) If Len(Ttemp) > 60 Then T = T & vbCrLf End If End If Loop C.Offset(0, 1) = T '1-tallet bestemmer at den ombrudte tekst står en kolonne til venstre for oprindelige tekst Next C End Sub
Kan du evt justere i koden, så den først "retter teksten ud". Nogle gange er teksten, der står i cellen allerede halvvejs ombrudt og det tror jeg måske vil få den til at se "fjollet" ud.
Sub LineShift() Dim C As Range Dim T As String Dim Ttemp As String For Each C In Range("D1:D12").Cells 'her vælges området med oprindelig tekst Ttemp = C Ttemp = Replace(C, Chr(10), " ") Ttemp = Replace(Ttemp, " ", " ") T = "" Do Until Len(Ttemp) = 0 If Len(C) < 60 Then T = T & Ttemp Ttemp = "" Else For x = 60 To 1 Step -1 If Mid(Ttemp, x, 1) = " " Then y = x GoTo A: End If Next A: T = T & Left(Ttemp, y) Ttemp = Mid(Ttemp, y + 1, 9999) If Len(Ttemp) > 60 Then T = T & vbCrLf End If End If Loop C.Offset(0, 1) = T '1-tallet bestemmer at den ombrudte tekst står en kolonne til højre for oprindelige tekst Next C End Sub
Synes godt om
Ny brugerNybegynder
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.