Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

VBA Zeilenumbruch

Forumthread: VBA Zeilenumbruch

VBA Zeilenumbruch
21.03.2016 10:33:27
Helena
Hallo
Sub test()
Dim c As Range
'Sheets("AV Tank").Select
For Each c In Range("B:B")
If Len(c.Value) > 36 Then
c.Value = Left(c.Value, 36) & Right(c.Value, Len(c.Value) - 20)
End If
Next c
End Sub

Dies habe ich gefunden und ist fast perfekt, es soll aber ganz ein fach nach 36 Zeichen Zeilenumbruch machen, jetzt wird der resttext noch gekürzt.
SOLL = nach 36 Zeichen, Rest in gleiche Zelle in 2te Zeile
DANKE
Helena
Gruss aus CH

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zeilenumbruch
21.03.2016 10:42:44
Daniel
Hi
c.Value = Left(c.Value, 36) & vbLF & Mid(c.Value, 37)
Gruß Daniel

AW: VBA Zeilenumbruch
21.03.2016 10:45:37
UweD
So...

Dim c As Range
For Each c In Range("B:B").SpecialCells(xlCellTypeConstants, 3)
If Len(c.Value) > 36 Then
c.Value = Left(c.Value, 36) & Chr(10) & Mid(c.Value, 37)
End If
Next c

Durch die Ergänzung .SpecialCells(xlCellTypeConstants, 3) werden nur belegte Zellen geprüft...
Gruß UweD

Anzeige
AW: VBA Zeilenumbruch
21.03.2016 19:44:39
Helena
Hallo
leider nicht perfekt es läuft minuten ? Ergebniss ist OK aber
der RUN geht sehr lange ..
DANKE
Gruss Helena

Hast du mal eine Musterdatei?
22.03.2016 09:40:41
UweD
Hallo nochmal
- Wieviele Zeilen weden denn bearbeitet?
- Laufen noch andere Makros ab, evtl. Change events?
- Hast du viele rechenintensive Formeln in der Datei?
Alles Einflussfaktoren auf die Laufzeit.
Gru UweD

Anzeige
AW: VBA Zeilenumbruch
22.03.2016 10:46:58
Daniel
Hi
wenns schneller gehen soll, darfst du nicht jede Zelle einzeln bearbeiten.
Dann musst du erst die Zellwerte in ein Array schreiben, in der Schleife dieses Array bearbeiten und am Schluss das Array zurück in die Zellen schreiben.
beim Verarbeiten von einfachen Werte-Arrays ist VBA viel schneller als beim Verabeiten von Excelzellen.
ausserdem solltest du nicht jede Zelle einer Spalte bearbeiten, dass sind nämlich verdammt vielen (1,04 MIO), sondern nur die, die auch tatsächlich verwendet werden.

dim arr
dim z as Long
With ActiveSheet.UsedRange.Columns(2)
arr = .value
for z = 1 to Ubound(arr, 1)
if len(arr(z, 1)) > 36 then arr(z, 1) = Left(arr(z, 1), 36) & vblf & Mid(arr(z, 1), 37)
next
.value = arr
End with
Gruß Daniel

Anzeige
AW: VBA Zeilenumbruch
22.03.2016 19:43:37
Helena
DANKE
das funktioniert wunderbar und "SCHNELL"
Helena
Gruss aus CH

AW: VBA Zeilenumbruch ERLEDIGT
22.03.2016 19:44:41
Helena
DANKE erledigt
Anzeige
Anzeige
Anzeige