Zellen 1 bis 25 in Zeile n mit Rahmen umranden.

Tikonteroga

Erfahrenes Mitglied
Hallo,

ich muss aktuell eine Tabelle in Excel mit VB6 mit Daten aus einer anderen Arbeitsmappe zweilenweise befüllen.

Gibt es eine elegante Möglichkeit, wie ich in einer Zeile n die Zellen 1 bis 25 mit einem Rahmen umranden kann?

Aktuell würde ich es nur mit einer Schleife mit konstantem rowIndex und cellIndex von 1 bis 25 hinbekommen.

Mfg

Tikonteroga
 

Yaslaw

alter Rempler
Moderator
Jedes Feld oder den ganezn Bereich umranden?
Und die ganze Zeile oder eine/mehrere ausgewählte Spalten?
 

Tikonteroga

Erfahrenes Mitglied
Hallo,

also es sol so sein, als ob ich in Excel die Zellen B1 bis B25 markiere und dann in der Rahmen-Schaltfläche "Alle Rahmenlinien" auswähle.

Vielleicht kurz zur Info. Ich habe in einem Arbeitsblatt in einer Arbeitsmappe in Zeile 1 von Spalte A bis Y bereits Spaltenüberschriften definiert. Wenn ich jetzt Zeilen an die Tabelle anhänge möchte ich entweder bevor oder nachdem ich Werte in die entsprechenden Zellen in der neuen Zeile eingetragen habe, alle Rahmen dieser neuen Zeile setzen.

Durch die Rahmen möchte ich auch den genutzen Bereich der Tabelle kenntlich machen.
 

tombe

Erfahrenes Mitglied
Makroaufzeichnung starten, gewünschte Zellen markieren und Rahmenlinien auswählen. Dann die Aufzeichnung beenden und fertig sollte es sein.

Visual Basic:
Sub Makro1()
    Range("A1:L17").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub

Hier wurde der Bereich A1 bis L17 markiert und eingerahmt.
 

Yaslaw

alter Rempler
Moderator
und das ganez verschönert als Sub mit dem Range als Parameter

Visual Basic:
'Testaufruf
Public Sub test()
    Call setAllBorders(ActiveSheet.Range("A1:C4"))
End Sub


'/**
' * Alle Zellen des Ranges mit einem Rahmen umgeben
' * @param  <Range>     Der Range auf den das ganez angewendet werden soll
' */
Public Sub setAllBorders(ByRef ioRange As Range)
    'Keine Diagonalen
    ioRange.Borders(xlDiagonalDown).LineStyle = xlNone
    ioRange.Borders(xlDiagonalUp).LineStyle = xlNone
    'Innenlinien
    Call formatBorder(ioRange, xlInsideHorizontal)
    Call formatBorder(ioRange, xlInsideVertical)
    'Aussenrand
    Call formatBorder(ioRange, xlEdgeBottom)
    Call formatBorder(ioRange, xlEdgeLeft)
    Call formatBorder(ioRange, xlEdgeRight)
    Call formatBorder(ioRange, xlEdgeTop)
End Sub

'/**
' * Formatiert ein Rahmenelement auf einen Range
' * @param  <Range>     Range auf den der Rahmen gesetzt wird
' * @param  <XlBordersIndex>    Definition um welches Rahmenelement es sich handelt
' */
Private Sub formatBorder(ByRef ioRange As Range, ByVal iBIndex As XlBordersIndex)
    With ioRange.Borders(iBIndex)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub