Umbruch in Zelle bei Zeichenanzahl...

Dieses Thema Umbruch in Zelle bei Zeichenanzahl... im Forum "Microsoft Office Suite" wurde erstellt von freestyler96, 5. Jan. 2006.

Thema: Umbruch in Zelle bei Zeichenanzahl... Hallo an alle, ich habe wieder mal ein Problem. In einer Excel-Datei erfassen verschiedene Mitarbeiter...

  1. Hallo an alle,

    ich habe wieder mal ein Problem. In einer Excel-Datei erfassen verschiedene Mitarbeiter Bearbeitungsvermerke.
    Wie ihr euch sicherlich denken könnt - kümmert es sie reichlich wenig, wie sehr sie die Zelle in der Breite aufblähen (sämtliche Hinweise auf Alt+Enter für einen Umbruch werden fortwährend igonriert). Da die Datei automatisch via Makro ausgelesen wird habe ich pausenlos ewig breite Spalten und muss eine Vielzahl von Zellen manuell nacharbeiten.

    --> Ihr ahnt es schon

    Kann mir jemand mit einem Code helfen, der die Zeichenlänge einer Zelle abprüft und, wenn der Inhalt länger als 25 Zeichen ist, jeweils nach 25 Zeichen einen Umbruch setzt.

    Das Dokument ist nur zur internen Verwendung. Eventualitäten wie Leerzeichen o. ä. müssen nicht berücksichtigt werden.
    Eine Prüfung, ob schon eine Umbruch vorliegt und wenn ja das Löschen von Selbigen wäre cool...

    Ich bin mit meinem Latein am Ende und dankbar für jeden Vorschlag.


    Ciao


    Fibo
     
  2. Wie soll das Makro die Spalte finden ?

    - feste Spaltennummer
    - Selektion
    - anders

    Oder kann es auch einfacher sein ?

    - bestimmte Spaltenbreite festlegen
    - Zelle formatieren -> Reiter Ausrichtung -> Häkchen in Zeilenumbruch

    Gruß Matjes :)
     
  3. Hallo Matjes,

    wiederum vielen Dank für deine Hilfe. Die einfach Einstellung Umbruch deckt leider nicht alle Eventualitäten ab.

    In diesem Fall handelt es sich um die konstante Spalte T (20) ab der 3. Zeile. Der Zeilenumfang ist dynamisch - aber das bekomme ich via ActiveSheet.UsedRange.Rows.Count verarbeitet.

    Nochmals Danke


    Ciao


    Fibo
     
  4. Hallo Fibonacci,

    zu
    Normalerweise gibt dieser Befehl  die Anzahl der Zeilen korrekt zurück. Aber wehe dem, der z.B. die ersten beiden Zeilen nicht befüllt also freiläßt. Dann kommen 2 Zeilen zuwenig heraus.
    Korrekt wäre:
    Und nun noch der Makro entsprechend deinen Angaben.
    Code:
    Option Explicit
    
    Sub SpalteT_ZeilenumbruchNach25Zeichen()
    
      Const c_SPALTE_T = 20
      Const c_Z_EERSTEZEILE = 3
      Const c_LF_NACH_X_ZEICHEN = 25
      
      Dim ws As Worksheet
      Dim s_Txt As String, z As Long, u As Long, pos As Long, l_rows As Long
      Dim l_Anz_LF As Long
      
     ->aktuelles Blatt setzen
      Set ws = ActiveSheet
      
     ->letzte Zeile mit Inhalt in Spalte T feststellen
      l_rows = ws.Cells(ws.Rows.Count, c_SPALTE_T).End(xlUp).Row
      
      
     ->Spaltebreite erstmal sehr breit setzen
      ws.Columns(c_SPALTE_T).ColumnWidth = 100
      
      
     ->über alle relevanten Zeilen der Spalte T
      For z = c_Z_EERSTEZEILE To l_rows
       ->Text holen
        s_Txt = ws.Cells(z, c_SPALTE_T).Value
        
       ->Zeilenumbruch aus Text entfernen (LF)
        pos = InStr(1, s_Txt, vbLf)
        Do While pos > 0
          s_Txt = Left(s_Txt, pos - 1) & Right(s_Txt, Len(s_Txt) - pos)
          pos = InStr(pos, s_Txt, vbLf)
        Loop
        
       ->Zeilenumbruch aus Text entfernen (CR)
        pos = InStr(1, s_Txt, vbCr)
        Do While pos > 0
          s_Txt = Left(s_Txt, pos - 1) & Right(s_Txt, Len(s_Txt) - pos)
          pos = InStr(pos, s_Txt, vbCr)
        Loop
      
       ->hat der String Zeichen ?
        If Len(s_Txt) > 0 Then
      
         ->Anzahl der notwendigen Zeilenumbrüche
          l_Anz_LF = (Len(s_Txt) - 1) \ c_LF_NACH_X_ZEICHEN
          
         ->Zeilenumbrüche setzen
          For u = l_Anz_LF To 1 Step -1
           s_Txt = Left(s_Txt, u * c_LF_NACH_X_ZEICHEN) & _
                   vbLf & _
                   Right(s_Txt, Len(s_Txt) - u * c_LF_NACH_X_ZEICHEN)
          Next
          
         ->Text zurückschreiben
          With ws.Cells(z, c_SPALTE_T)
            .NumberFormat = @-> Zellformat String
            .WrapText = True   -> Umbruch
            .Value = s_Txt     -> Text
          End With
          
        End If
      Next
      
     ->Spaltebreite auf optimalen Wert setzen
      ws.Columns(c_SPALTE_T).AutoFit
      
    AUFRAEUMEN:
      Set ws = Nothing
    End Sub
    Gruß Matjes :)
     
  5. Hallo Matjes,

    da habe ich ja Glück gehabt, dass die relevanten Datensätze immer in Zeile 1 beginnen und das Layout erst später in der Verarbeitung geändert wird. Andernfalls hätte ich mich mit ActiveSheet.UsedRange.Rows.Count ganz mies selber reingelegt. Aber der Test belegt es ... --> Schwein gehabt --> thx für den Hinweis.

    Mit dem Code selber muss ich mich noch beschäftigen. Aber wieder viel neues zum knobeln.

    So denn,

    Danke für deine Mühe und ein schönes Wochenende....

    Ciao


    Fibo
     
Die Seite wird geladen...

Umbruch in Zelle bei Zeichenanzahl... - Ähnliche Themen

Forum Datum
Zeilenumbruch bei Desktopicons deaktivierbar? Software: Empfehlungen, Gesuche & Problemlösungen 12. Aug. 2009
Abschnittsumbruch bei Works 8.5 Windows XP Forum 18. Feb. 2008
Texteditor gesucht, der Zeilenumbrüche entfernen kann Software: Empfehlungen, Gesuche & Problemlösungen 12. Dez. 2007
OUTLOOK 2007 kein Zeilenumbruch Windows XP Forum 27. Juli 2007
fortlaufender abschnittsumbruch verschiebt text Microsoft Office Suite 22. Juli 2007