web-dev-qa-db-de.com

Rahmen um jede Zelle in einem Bereich

Ich versuche, eine einfache Funktion zu erstellen, die jeder Zelle in einem bestimmten Bereich Rahmen hinzufügt. Mit der wundervollen Aufnahme wird eine Menge Code erzeugt, der ziemlich nutzlos ist. Der Code unten zeigt eine 'Tabelle' mit Daten. Um jede Zelle in diesem Bereich möchte ich einen Rand hinzufügen. Online konnte ich keine einfache oder klare Antwort darauf finden.

Alle Hilfe wird sehr geschätzt!

Set DT = Sheets("DATA")
endRow = DT.Range("F" & Rows.Count).End(xlUp).Row
result = 3

For I = 2 To endRow
    If DT.Cells(I, 6).Value = Range("B1").Value Then
        Range("A" & result) = DT.Cells(I, 6).Value
        Range("B" & result) = DT.Cells(I, 1).Value
        Range("C" & result) = DT.Cells(I, 24).Value
        Range("D" & result) = DT.Cells(I, 37).Value
        Range("E" & result) = DT.Cells(I, 3).Value
        Range("F" & result) = DT.Cells(I, 15).Value
        Range("G" & result) = DT.Cells(I, 12).Value
        Range("H" & result) = DT.Cells(I, 40).Value
        Range("I" & result) = DT.Cells(I, 23).Value
        result = result + 1
    End If
Next I
33
CustomX

Sie benötigen nur eine einzige Codezeile, um den Rahmen um jede Zelle im Bereich festzulegen:

Range("A1:F20").Borders.LineStyle = xlContinuous

Es ist auch einfach, mehrere Effekte auf den Rand um jede Zelle anzuwenden.

Zum Beispiel:

Sub RedOutlineCells()
    Dim rng As Range

    Set rng = Range("A1:F20")

    With rng.Borders
        .LineStyle = xlContinuous
        .Color = vbRed
        .Weight = xlThin
    End With
End Sub
109
Jon Crowell

Folgendes kann mit einem beliebigen Bereich als Parameter aufgerufen werden:

Option Explicit

Sub SetRangeBorder(poRng As Range)
    If Not poRng Is Nothing Then
        poRng.Borders(xlDiagonalDown).LineStyle = xlNone
        poRng.Borders(xlDiagonalUp).LineStyle = xlNone
        poRng.Borders(xlEdgeLeft).LineStyle = xlContinuous
        poRng.Borders(xlEdgeTop).LineStyle = xlContinuous
        poRng.Borders(xlEdgeBottom).LineStyle = xlContinuous
        poRng.Borders(xlEdgeRight).LineStyle = xlContinuous
        poRng.Borders(xlInsideVertical).LineStyle = xlContinuous
        poRng.Borders(xlInsideHorizontal).LineStyle = xlContinuous
    End If
End Sub

Beispiele:

Call SetRangeBorder(Range("C11"))
Call SetRangeBorder(Range("A" & result))
Call SetRangeBorder(DT.Cells(I, 6))
Call SetRangeBorder(Range("A3:I" & endRow))
10
Olle Sjögren

Ich habe eine Reihe von 15 Subroutinen, die ich zu jeder von mir erstellten codierten Excel-Arbeitsmappe hinzufüge, und dies ist eine davon. Die folgende Routine löscht den Bereich und erstellt eine Grenze.

Beispielanruf:

Call BoxIt(Range("A1:z25"))

Subroutine:

Sub BoxIt(aRng As Range)
On Error Resume Next

    With aRng

        'Clear existing
        .Borders.LineStyle = xlNone

        'Apply new borders
        .BorderAround xlContinuous, xlThick, 0
        With .Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .Weight = xlMedium
        End With
        With .Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .Weight = xlMedium
        End With
    End With

End Sub
6
Crazyd

Hier ist ein anderer Weg

Sub testborder()

    Dim rRng As Range

    Set rRng = Sheet1.Range("B2:D5")

    'Clear existing
    rRng.Borders.LineStyle = xlNone

    'Apply new borders
    rRng.BorderAround xlContinuous
    rRng.Borders(xlInsideHorizontal).LineStyle = xlContinuous
    rRng.Borders(xlInsideVertical).LineStyle = xlContinuous

End Sub
5
Dick Kusleika

Sie können diese Aufgabe auch in ein anderes Makro einschließen, ohne ein neues zu öffnen:

Ich setze Sub und Sub nicht ein, da das Makro viel längeren Code enthält, wie in der Abbildung unten dargestellt

With Sheets("1_PL").Range("EF1631:JJ1897")
    With .Borders
    .LineStyle = xlContinuous
    .Color = vbBlack
    .Weight = xlThin
    End With
[![enter image description here][1]][1]End With
0
Mariusz Krukar

Um Ränder hinzuzufügen, versuchen Sie dies beispielsweise:

Range("C11").Borders(xlEdgeRight).LineStyle = xlContinuous
Range("A15:D15").Borders(xlEdgeBottom).LineStyle = xlContinuous

Ich hoffe, dass die Syntax korrekt ist, weil ich dies in C # gemacht habe.

0
Sylca
xlWorkSheet.Cells(1, 1).Borders(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlDataBarBorderType.xlDataBarBorderSolid
xlWorkSheet.Cells(1, 1).Borders(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Excel.XlDataBarBorderType.xlDataBarBorderSolid
xlWorkSheet.Cells(1, 1).Borders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlDataBarBorderType.xlDataBarBorderSolid
xlWorkSheet.Cells(1, 1).Borders(Excel.XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlDataBarBorderType.xlDataBarBorderSolid
0
Madjid Sepanj