2012-10-29 13 views
22

Ich versuche, eine einfache Funktion zu erstellen, die Grenzen um jede Zelle in einem bestimmten Bereich hinzufügen wird. Mit der wundervollen Aufnahme erzeugt dies eine Tonne Code, der ziemlich nutzlos ist. Der Code unten zeigt eine "Tabelle" von Daten an, um jede Zelle in diesem Bereich möchte ich einen Rahmen hinzufügen. Online konnte ich hierfür keine einfache oder klare Antwort finden.Rahmen um jede Zelle in einem Bereich

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 
+1

ich meinen Titel bearbeitet gesehen, als ob es die Menschen verwirrt. – CustomX

Antwort

77

Sie nur eine einzige Zeile Code müssen Setzen Sie den Rahmen um jede Zelle im Bereich:

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

Es ist auch leicht mehrere Effekte auf die Grenze um jede Zelle zu übernehmen.

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 
1

Für Grenzen Hinzufügen versuchen, dies zum Beispiel:

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

Hoffnung, dass Syntax korrekt ist, weil ich dies in C# getan haben.

+0

Hilft nicht wirklich, das funktioniert auf einem Bereich, aber nicht pro Zelle. – CustomX

+0

und was genau ist das: Bereich ("C11"). Borders (xlEdgeRight) .LineStyle = xlContinuous oder das: Bereich ("A15: A15"). Borders (xlEdgeBottom) .LineStyle = xlContinuous – Sylca

+0

Idk das ist, was Sie ' Ich habe nichts in meinem ursprünglichen Code erstellt. – CustomX

8

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)) 
5

Hier ist eine andere Art und Weise

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 
2

Haben Sie diese Seite nicht gefunden, als ich ursprünglich für dieses Problem suchen, aber hier war mein Endergebnis. Ehrlich geschaut und in SuperUsers gepostet, aber nicht sicher ob da oder hier hin gehört.

Beispielaufruf

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 
0
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 
Verwandte Themen