Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Zeilenumbruch

Betrifft: VBA Zeilenumbruch von: Helena
Geschrieben am: 21.03.2016 09:33:27

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

  

Betrifft: AW: VBA Zeilenumbruch von: Daniel
Geschrieben am: 21.03.2016 09:42:44

Hi

c.Value = Left(c.Value, 36) & vbLF & Mid(c.Value, 37)

Gruß Daniel


  

Betrifft: AW: VBA Zeilenumbruch von: UweD
Geschrieben am: 21.03.2016 09:45:37

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


  

Betrifft: AW: VBA Zeilenumbruch von: Helena
Geschrieben am: 21.03.2016 18:44:39

Hallo

leider nicht perfekt es läuft minuten ? Ergebniss ist OK aber
der RUN geht sehr lange ..

DANKE

Gruss Helena


  

Betrifft: Hast du mal eine Musterdatei?? von: UweD
Geschrieben am: 22.03.2016 08:40:41

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


  

Betrifft: AW: VBA Zeilenumbruch von: Daniel
Geschrieben am: 22.03.2016 09:46:58

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


  

Betrifft: AW: VBA Zeilenumbruch von: Helena
Geschrieben am: 22.03.2016 18:43:37

DANKE

das funktioniert wunderbar und "SCHNELL"

Helena

Gruss aus CH


  

Betrifft: AW: VBA Zeilenumbruch ERLEDIGT von: Helena
Geschrieben am: 22.03.2016 18:44:41

DANKE erledigt


 

Beiträge aus den Excel-Beispielen zum Thema "VBA Zeilenumbruch"