208 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

nach reichlicher Internetrecherche habe ich leider keinen passenden VBA code gefunden, der mir hilft das Problem zu lösen, daher wäre ich sehr dankbar, wenn mir hier jemand helfen könnte.

Ich möchte per VBA Code einen bestimmten Bereich mit Rahmenlinien versehen. Die Anzahl der zu formatierenden Spalten soll aus einem Feld ausgelesen werden und die Anzahl der zu formatierenden Zeilen soll auch aus einem Feld ausgelesen werden. Hieraus ergibt sich der zu formatierenden Bereich. In diesem Bereich soll dann jede Zelle einen kompletten Rahmen erhalten.

4 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi,

die Anzahl an Zeilen/Spalten ist nicht ausreichend - du musst auch die Startzeile/Startspalte angeben.

Bis später, Karin

0 Punkte
Beantwortet von

Hallo Karin,

vielen Dank für deine Antwort und den Hinweis.

Vielleicht muss ich mein Problem auch noch einmal etwas genauer schildern. Der zu formatierende Bereich soll im Feld B3 starten. Im Feld U2 steht die Anzahl der Zeilen (Bsp. 20) und im Feld U3 steht die Anzahl der Spalten (Bsp. 30). Die Zahlen die dort stehen sind variable. Somit soll der zu formatierende Bereich von B3 bis B23 (+20 Zeilen) und von B3 bis AF3(+30 Spalten) sein, also B3:AF23.

Einen Code für Rahmenlinien habe ich bereits, jedoch weiß ich nicht wie ich die Variablen einbauen kann. Zunächst müsste ich U2 und U3 auslesen und das Ergebnis (AF23) dann in die Range (B3:AF23) einfügen.

Sub Rahmeneinstellungen()

With Range("B3:AF23").Borders

 .LineStyle = xlContinious

 .Color = vbGreen

 .Weight = xlThick

End With

End Sub

Leider bin ich was die VBA Programmierung angeht ein absoluter Anfänger.

Wie könnten denn ein Code beispielsweise aussehen?  

 

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
ausgewählt von mickey
 
Beste Antwort

Hi,

ich nehme an du meinst das so:

Sub Rahmeneinstellungen()
    With Range(Cells(3, 2), Cells(Range("U2").Value, Range("U3").Value))
        With .Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Color = vbGreen
            .Weight = xlThick
        End With
        With .Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Color = vbGreen
            .Weight = xlThick
        End With
        With .Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Color = vbGreen
            .Weight = xlThick
        End With
        With .Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Color = vbGreen
            .Weight = xlThick
        End With
        With .Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .Color = vbGreen
            .Weight = xlThick
        End With
        With .Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .Color = vbGreen
            .Weight = xlThick
        End With
    End With
End Sub

Bis später, Karin

0 Punkte
Beantwortet von
Hallo Karin,

vielen herzlichen Dank für deine Hilfe.

Genau das habe ich gesucht, habe anscheinend etwas zu komplizier/umständlich gedacht.

Viele Grüße

Vera
...