Office: (Office 2010) Zellenformatierung über VBA

Helfe beim Thema Zellenformatierung über VBA in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, Ich kopiere über eine Schleife definierte Texte aus einem Worksheet in ein anderes. Sie werden dabei in die Zellen .cells(i,2) kopiert und sind... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von ThekesC, 29. September 2015.

  1. ThekesC Erfahrener User

    Zellenformatierung über VBA


    Hallo,
    Ich kopiere über eine Schleife definierte Texte aus einem Worksheet in ein anderes.
    Sie werden dabei in die Zellen .cells(i,2) kopiert und sind aber viel zu lang.
    Jetzt möchte ich dass die Texte an einen Zellenbereich angepasst werden, ähnlich wie "Blocksatz".
    Zb ist der Text in .cells(1,2) 20 Zellen lang und soll nun aufgeteilt werden in 2*10 Zellen.
    Hat jemand eine Idee wie ich das über VBA hinbekomme?

    Vielen Dank,
    TC

    Edit:
    Habs jetzt so gelöst, Schleife ist noch nicht eingebaut, falls mal jemand das selbe Problem hat:
    Private Sub CommandButton1_Click()
    Dim STR1 As String
    Dim STR2 As String
    Static LENHELP As Integer
    LENHELP = 50
    Worksheets("Tabelle1").Range(Cells(4, 1), Cells(4, 5)).MergeCells = True
    If Len(Worksheets("Tabelle1").Cells(1, 1)) > LENHELP Then
    STR1 = Left(Worksheets("Tabelle1").Cells(1, 1), LENHELP)
    STR2 = Right(Worksheets("Tabelle1").Cells(1, 1), Len(Worksheets("Tabelle1").Cells(1, 1)) - LENHELP)
    Worksheets("Tabelle1").Cells(4, 1) = STR1 & vbCrLf & STR2
    Worksheets("Tabelle1").Rows(4).RowHeight = 30
    Else
    Worksheets("Tabelle1").Cells(4, 1) = Worksheets("Tabelle1").Cells(1, 1)
    End If
    End Sub
     
    Zuletzt bearbeitet: 29. September 2015
  2. miriki Erfahrener User
    Moinsens!

    Das funktioniert sicherlich, aber ich würde gerne ein bißchen was dazu anmerken:

    Du benutzt eine "static" Variable LENHELP. Diese "static" sind eigentlich böse und man sollte sie vermeiden, wenn es irgendwie geht. Die sind nur der üble Kompromiß, wenn man keine globale Variable benutzen will (guter Gedanke prinzipiell), aber andererseits einen Prozedur-lokalen Wert erhalten möchte. Du benutzt LENHELP aber eigenmtlich gar nicht als Variable, sondern weist nur einmal einen Wert zu und das war's. Von daher ist eine "const" Deklaration viel sinnvoller. (Eine "static" Variable verursacht dem Speicher-Management nur unnötig Bauchschmerzen.)

    Du benutzt diverse worksheets("Tabelle1").xxx Aufrufe. Das würde ich der Übersichtlichkeit halber mit einer Objekt-Variablen einkürzen. Du kannst z.B. ein
    dim s1 as worksheet
    set s1=worksheets("tabelle1")
    benutzen, um dann im weiteren Verlauf nur noch "s1" statt des langen Geraffels zu benutzen. Und solltest Du Dein Blatt mal umbenennen, brauchst Du Deinen Code nur noch an einer Stelle anpassen. Außerdem könntest Du in Deinem Beispiel auch "activesheet" benutzen, weil der Button sich auf dem gleichen Blatt befindet.

    Mit ein wenig Umstellen Deines Codes kannst Du beliebig lange Texte umbrechen und bist nicht auf 2 Zeilen beschränkt. Eine "while" Schleife kann Dir hier gut helfen.

    Bedenke bei der ganzen Lösung aber eins: Das "Umbrechen" mit einer festen Anzahl von Zeichen macht eigentlich nur Sinn, wenn eine Festbreiten-Schrift wie z.B. "Courier" benutzt wird. Bei Schriften mit variablen Breiten der einzelnen Zeichen (ein "M" braucht mehr Platz als ein "i") wird es so gut wie nie nach echtem Blocksatz aussehen. Dazu müßtest Du die Breite jedes einzelnen Zeichens bestimmen, was schon ein ganz schöner Aufwand wäre.

    Also, nur ein paar Gedanken zur Verbesserung. Die eigentliche Funktionalität hast Du ja schon hinbekommen.

    Gruß, Michael

    Code:
    Private Sub CommandButton1_Click()
    
        Const LENHELP = 50
    
        Dim s1 As Worksheet
        Dim txt1 As String
        Dim txt2 As String
        Dim n As Integer
    
        Set s1 = ActiveSheet 'Worksheets("Tabelle1")
        s1.Range("a4:e4").MergeCells = True
        s1.Range("a4:e4").WrapText = True
    
        txt1 = s1.Range("a1").Value
        txt2 = ""
        n = 0
        While (txt1 <> "")
            txt2 = txt2 & Left$(txt1, LENHELP) & vbCrLf
            n = n + 1
            If (Len(txt1) >= LENHELP) Then
                txt1 = Right$(txt1, Len(txt1) - LENHELP)
              Else
                txt1 = ""
            End If
        Wend
        If (txt2 <> "") Then txt2 = Left(txt2, Len(txt2) - 1) 'letztes vbCrLf entfernen
    
        s1.Range("a4").Value = txt2
        s1.Rows(4).RowHeight = n * 15 '30
        
    End Sub
     
Thema:

Zellenformatierung über VBA

Die Seite wird geladen...
  1. Zellenformatierung über VBA - Similar Threads - Zellenformatierung VBA

  2. Zellenformatierung und =Summe() funktionieren nicht

    in Microsoft Excel Hilfe
    Zellenformatierung und =Summe() funktionieren nicht: Hallo Zusammen, ich habe aus einem externen Programm Daten erhalten. Diese muss ich noch Formatieren (0.00 "m") und zusammen rechnen. Ich habe dies wie auf dem gewohnten Wege gemacht, erhalte...
  3. Excel verändert Zellenformatierung nach jedem Öffnen

    in Microsoft Excel Hilfe
    Excel verändert Zellenformatierung nach jedem Öffnen: Hallo zusammen, Ich habe eine CSV Datei in Excel. In einer Spalte möchte ich Werte nach dem Schema: 2 - 3 speichern. Aber egal welche Formatierung ich für diese Spalte einstelle (Text, Standard,...
  4. Zellenformatierung

    in Microsoft Excel Hilfe
    Zellenformatierung: Hallo, ich möchte meine Tabelle formatieren. Dadurch soll von den Werten 1 bis 999 "g" und 1000 bis x "kg" angezeigt werden. Außerdem soll bei einem Wert von unter 1 eine Dezimalstelle angezeigt...
  5. Excel 2007 - Zellenformatierung auch in einer leeren Zelle anzeigen

    in Microsoft Excel Hilfe
    Excel 2007 - Zellenformatierung auch in einer leeren Zelle anzeigen: Hallo zusammen! Momentan erstelle ich mir Schaltplanvorlagen für meine Ausbildung als Elektroniker und möchte den Klemmenplan in Excel realisieren. Da ich direkt in der Überschrift angeben...
  6. Budget; Zellenformatierung

    in Microsoft Excel Hilfe
    Budget; Zellenformatierung: Hallo zusammen, bei der angehängten Budget-Datei soll folgendes passieren: Das im letzten Jahr festegelegte Budget ist in der Spalte "PLAN" zu sehen. In der Spalte "IST" erscheint der im Monat...
  7. Komplizierte Zellenformatierung -> brauche Hilfe

    in Microsoft Excel Hilfe
    Komplizierte Zellenformatierung -> brauche Hilfe: Hallo ich habe ein großes Problem: Ich habe bereits früher ein Thema verfasst: http://www.office-hilfe.com/support/topic,14837,-excel-formatiert-alle-zellen-automatisch-in-waehrung!-warum%3F.html...
  8. Problem bei Zellenformatierung "Text" - Gelöst!

    in Microsoft Excel Hilfe
    Problem bei Zellenformatierung "Text" - Gelöst!: Hallo, ich bin 58 und fange gerade mit Excel an. Habe Zahlen aus einer Word-Tabelle kopiert und eingefügt und unter die Stromverbrauchswerte von je zwölf Monaten die Summenformel reingeschrieben....
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden