Office: vba Zeilenhöhe und breite, Format ändern in select case sche

Helfe beim Thema vba Zeilenhöhe und breite, Format ändern in select case sche in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, Wie kann ich in einer case Schleife abwechselnd von Zeile 4 - 78 z.b. Folgende formate zuweisen Zeile 6 Spalte A... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von jagga007, 3. März 2011.

  1. jagga007 Erfahrener User

    vba Zeilenhöhe und breite, Format ändern in select case sche


    Hallo,

    Wie kann ich in einer case Schleife abwechselnd von Zeile 4 - 78 z.b.

    Folgende formate zuweisen

    Zeile 6
    Spalte A .NumberFormat = "d"
    .ColumnWidth = 2.57
    .RowHeight = 7
    .ClearComments
    Spalte B .NumberFormat = "ddd"
    .ColumnWidth = 2
    Spalte C .NumberFormat = "General"
    .ColumnWidth = 4.71

    Zeile 7
    Spalte A .NumberFormat = "d"
    .ColumnWidth = 2.57
    .RowHeight = 7
    .ClearComments
    Spalte B .NumberFormat = "ddd"
    .ColumnWidth = 2
    Spalte C .NumberFormat = "General"
    .ColumnWidth = 4.71
    usw.

    Ich krieg das nicht gebacken. wie kann das Realisieren und so kurz wie möglich schreiben.
    Ich dachte mir vieleicht in einer For Schleife oder wie ist es Sinnvoller?
    Da jede zweite Zeile eine andere Höhe hat ist es dann auch möglich alles in eine Schleife zu verpacken?
    Code:
    For D = 1 To LastDay
         .Cells(Zeile, 1).RowHeight = 8
          Zeile = Zeile + 1
    Next D
    Mit merge verbinde ich dann immer zwei zeilen.
    Code:
    .Range(Cells(vRow, vCol), Cells(vRow + 1, vCol)).MergeCells = True
    .Range(Cells(vRow, vCol + 1), Cells(vRow + 1, vCol + 1)).MergeCells = True
    Oder ist es sinnvoller erst die Zeilen zu verbinden und dann zu formatieren?


    Im angefügten Beispielbild hab ich schon ein Script wie es dann aussehen sollte.

    wäre schön, wenn mir geholfen werden könnte und bedanke mich schon im voraus für eventuelle Bemühungen.

    Gruß Rudolf
     
    jagga007, 3. März 2011
    #1
  2. miriki Erfahrener User
    Re: vba Zeilenhöhe und breite, Format ändern in select case

    Ein guter Ansatz ist dabei eine FOR..NEXT Schleife mit einem IF im Schleifenkörper, das überprüft, ob eine gerade oder ungerade Zeile dran ist:

    Code:
    columns(1).ColumnWidth = 2.57
    columns(2).ColumnWidth = 2
    columns(3).ColumnWidth = 4.71
    
    for n = 4 to 78
        if (n mod 2) = 1 then
    
            'format für "ungerade" Zeilen
            rows(n).RowHeight = 7
            'A
            cells(n,1).NumberFormat = "d"
            cells(n,1).ClearComments
            'B
            cells(n,2).NumberFormat = "ddd"
            'C
            cells(n,3).NumberFormat = "General"
    
          else
    
            'format für "gerade" Zeilen
            rows(n).RowHeight = 7
            'A
            cells(n,1).NumberFormat = "d"
            cells(n,1).ClearComments
            'B
            cells(n,2).NumberFormat = "ddd"
            'C
            cells(n,3).NumberFormat = "General"
    
        end if
    next n
    (Hab ich was übersehen oder ist Zeile 6 und Zeile 7 in Deinem Beispiel doch mit gleichen Formaten versehen?)

    Warum?

    Ich meine... Wenn Du zwei Zellen verbindest, geht die Formatierung einer der beiden Zellen verloren. Wenn Du also A formatierst, dann B formatierst und dann A und B verbindest, hättest Du Dir die Formatierung für B vorher auch sparen können.

    Gruß, Michael
     
    miriki, 4. März 2011
    #2
  3. jagga007 Erfahrener User
    Vielen Dank für diesen Tipp miriki,

    konnte mit deiner dieses Problem lösen.

    Ich würde dir gerne noch eine Frage stellen.
    und zwar wie die siehst hab ich für jeden Tag jeweils 2 Zeilen mit Spalten verbunden. Würde aber gerne einen Rahmen um die jeweilige Tage zuweisen. Aber irgendwie funktioniert das nicht so wie ich das gerne hätte.

    Code:
               For Tag = 1 To LastDay
                    'Comment = FeiertagName(Datum)
                    With Cells(Index * 2 + Zeile, Spalte)
                        .Value = Datum
                        'If Comment <> "" Then .AddComment (Comment)
                        With Cells(Index * 2 + Zeile, Spalte + 1)
                            .Value = Datum
                        End With
                    End With
                    
                    With .Range(Cells(Index * 2 + Zeile, Spalte), Cells(Index * 2 + Zeile + 1, Spalte + 2))
                        'Wochenenden und Feiertage farbig hinterlegen
                        If Wochenende(Datum) Then
                            .Interior.Color = RGB(255, 255, 0)
                        End If
                        'Feiertage Farben
                        If Feiertag(Datum) Then
                            .Interior.Color = RGB(255, 90, 90)
                        End If
                    End With
                    'Kalenderwoche
                    If Weekday(Datum, vbMonday) = 1 Or Day(Datum) = 1 Then
                        With Cells(Index * 2 + Zeile, Spalte + 2)
                            .Value = dinKalenderWoche(Datum)
                            .Locked = True
                        End With
                    End If
                    'Rahmen der verbundenen Zellen Tag
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = 2
                    
                    Datum = Datum + 1
                    Zeile = Zeile + 2
                Next Tag
    
    Hast du da einen Tipp?

    Gruß Rudolf
     
    jagga007, 14. März 2011
    #3
  4. miriki Erfahrener User

    vba Zeilenhöhe und breite, Format ändern in select case sche

    Das könmnte damit zusammenhängen, daß Du nicht genau definiert hast, was Du denn gerne hättest. ;-)

    Überprüf mal...
    Code:
    For Tag = 1 To LastDay
        With Cells(Index * 2 + Zeile, Spalte)
            [...]
        End With
        With .Range(Cells(Index * 2 + Zeile, Spalte), Cells(Index * 2 + Zeile + 1, Spalte + 2))
            [...]
        End With
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = 2
    Next Tag
    
    ... worauf sich .LineStyle usw. beziehen. Da schlägt irgendein WITH zu, das bereits außerhalb der FOR..NEXT Schleife gesetzt wird, denn die WITH innerhalb der Schleife sind alle wieder mit END WITH abgeschlossen.

    Gruß, Michael
     
    miriki, 14. März 2011
    #4
  5. jagga007 Erfahrener User
    Hast recht und hab es auch gleich umgeschrieben. Aber auch so funktioniert es nicht.

    Code:
                For Tag = 1 To LastDay
                    'Comment = FeiertagName(Datum)
                    With Cells(Index * 2 + Zeile, Spalte)
                        .Value = Datum
                        'If Comment <> "" Then .AddComment (Comment)
                        With Cells(Index * 2 + Zeile, Spalte + 1)
                            .Value = Datum
                        End With
                    End With
                    'Kalenderwoche
                    If Weekday(Datum, vbMonday) = 1 Or Day(Datum) = 1 Then
                        With Cells(Index * 2 + Zeile, Spalte + 2)
                            .Value = dinKalenderWoche(Datum)
                            .Locked = True
                        End With
                    End If
                    
                    With .Range(Cells(Index * 2 + Zeile, Spalte), Cells(Index * 2 + Zeile + 1, Spalte + 2))
                        'Rahmen der verbundenen Zellen Tag, Wochentag und Comments mit weißen Rahmen versehen
                        .LineStyle = xlContinuous
                        .Weight = xlThin
                        .ColorIndex = 2
                        'Wochenende Farben
                        If Wochenende(Datum) Then
                            .Interior.Color = RGB(255, 255, 0)
                        End If
                        'Feiertage Farben
                        If Feiertag(Datum) Then
                            .Interior.Color = RGB(255, 90, 90)
                        End If
                    End With
    
    und immer wenn im Einzelschritt überprüfe bricht das Programm in der Zeile .LineStyle = xlContinuous ab. Oder muß ich diesen Teil vieleicht anders schreiben. Weißt du wie?

    Gruß Rudolf
     
    jagga007, 14. März 2011
    #5
  6. miriki Erfahrener User
    Im Prinzip die gleiche Frage wie vorher: Worauf bezieht sich .Range(... ? Ich schätze mal, da ist etwas in der Art von
    Code:
    with worksheets("blablubb")
    vor dem Beginn der FOR Schleife. Interessanterweise beziehst Du Dich mit dem .Range() dann auf dieses WITH, während Du in den anderen beiden Blöcken mit WITH Cells() dich auf das ActiveSheet beziehst. (Beachte den fehlenden . vor den Cells().)

    Meine Vermutung: Du hast ein WITH vor der Schleife, mit dem Du für die folgenden Anweisungen das zu benutzende Blatt festlegst. Dieses Blatt ist aber ein anderes, als das gerade aktive. Entsprechend laufen Cells (ohne .) und .Range (mit .) in verschiedene Richtungen.

    Was heißt denn "abbrechen"? Es kommt eine Fehlermeldung? Irgendwas mit dem "Range-Objekt"?

    Ich würde mal schätzen, daß es funktioniert, wenn Du in allen Fällen einen . vor das Wort Cells() setzt, was in obigem Auszug dann 4x der Fall wäre: 2x beim WITH, 2x innerhalb des .Range(). Ohne aber genau zu wissen, was vor der FOR Schleife passiert, ist das aber trotzdem nur geraten - vielleicht gut geraten, aber trotzdem nur geraten.

    Gruß, Michael
     
    miriki, 15. März 2011
    #6
Thema:

vba Zeilenhöhe und breite, Format ändern in select case sche

Die Seite wird geladen...
  1. vba Zeilenhöhe und breite, Format ändern in select case sche - Similar Threads - vba Zeilenhöhe breite

  2. VBA Code " Zeilenhöhe bei Verb. Zellen Funktioniert fasst"

    in Microsoft Excel Hilfe
    VBA Code " Zeilenhöhe bei Verb. Zellen Funktioniert fasst": Hallo Leute dieser Code für Zellenhöhe bei Verbundenen Zellen Funktioniert fast. Ich habe ein Code von jemand anderem bekommen der nicht in einem Forum ist. Ich kann gerade diese Person nicht...
  3. Automatische Zeilenhöhe ohne VBA

    in Microsoft Excel Hilfe
    Automatische Zeilenhöhe ohne VBA: Hallo, ich arbeite aktuell an einer Excel-Tabelle, in der durch die Nutzer später unter anderem Freitextfelder für nähere Erläuterungen ausgefüllt werden müssen. Diese Freitextfelder müssen...
  4. Zeilenhöhe per VBA automatisch anpassen?

    in Microsoft Excel Hilfe
    Zeilenhöhe per VBA automatisch anpassen?: Hallo liebes Forum, ich hätte mal wieder eine Frage: Mein Ziel ist es, die Zeilenhöhen in der Beispielsdatei, die ich anhänge automatisch per VBA anzupassen. Konkret soll das so aussehen: In...
  5. Zeilenhöhe mit VBA festlegen

    in Microsoft Excel Hilfe
    Zeilenhöhe mit VBA festlegen: hallo zusammen, vieleicht ist diese Frage schon mal vorgekommen, dann entschuldigung, sonst: Wie kann ich die Zeilenhöhe mit VBA einstellen? Tabelle1.Rows(1, 1).Height = 23.25 --> geht nicht...
  6. Autofit für Zeilenhöhe in VBA

    in Microsoft Excel Hilfe
    Autofit für Zeilenhöhe in VBA: Moin moin, ich habe eine Autofit Funktion mit einem Makro aufgenommen und im Worksheet eingebunden, hier der Code: cells.Select Selection.Rows.autofit Range("I1").Select...
  7. VBA & Excel Problem Zeilenhöhe

    in Microsoft Excel Hilfe
    VBA & Excel Problem Zeilenhöhe: Hallo! Ich habe ein Problem mit der Zeilenhöhe. Via Makro wird schon seit Jahren eine Liste von (Bsp.) KW19 überarbeitet und via Sverweis => Werte einfügen aus KW18 Texte übertragen. Das...
  8. VBA Skript Hilfe: Zeilenhöhe

    in Microsoft Excel Hilfe
    VBA Skript Hilfe: Zeilenhöhe: Hallo liebe Forumsmitglieder, ich bräuchte dringend Hilfe bei einem kurzen (wahrscheinlich) recht einfachen VBA Skript. Folgender Sachverhalt: Wenn Zeile 330=1, dann soll die Zeile 89 86...
  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