2012-10-29 32 views
22

Sto cercando di creare una funzione semplice che aggiunga bordi attorno a ogni cella in un determinato intervallo. Usando la meravigliosa registrazione questo genera un sacco di codice che è abbastanza inutile. Il codice seguente mostrerà una "tabella" di dati, attorno a ogni cella in questo intervallo vorrei aggiungere un bordo. Online Non sono stato in grado di trovare una risposta semplice o chiara per questo.Bordo attorno a ogni cella in un intervallo

Tutto l'aiuto è molto apprezzato!

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

ho modificato il mio titolo visto come se confuso persone. – CustomX

risposta

77

Hai solo bisogno di una sola riga di codice per imposta il bordo attorno a ogni cella dell'intervallo:

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

È anche facile applicare più effetti al bordo attorno a ciascuna cella.

Ad esempio:

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

Per aggiungere confini provare questo, ad esempio:

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

speranza che la sintassi è corretta perché ho fatto questo in C#.

+0

Non aiuta davvero, funzionerà su un intervallo, ma non per cella. – CustomX

+0

e, che cosa è esattamente questo: Range ("C11"). Bordi (xlEdgeRight) .LineStyle = xlContinuo o questo: Intervallo ("A15: A15"). Bordi (xlEdgeBottom) .LineStyle = xlContinuo – Sylca

+0

Idk è ciò che sei tu non ho creato nulla fornito nel mio codice iniziale. – CustomX

8

Di seguito può essere chiamato con qualsiasi intervallo come parametro:

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 

Esempi:

Call SetRangeBorder(Range("C11")) 
Call SetRangeBorder(Range("A" & result)) 
Call SetRangeBorder(DT.Cells(I, 6)) 
Call SetRangeBorder(Range("A3:I" & endRow)) 
5

Ecco un altro modo

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

Non hai trovato questa pagina quando stavo in origine alla ricerca di questo problema, ma qui era il mio risultato finale. Onestamente alzò lo sguardo e pubblicato in SuperUser, ma non sono sicuro se appartiene lì o qui.

esempio di chiamata

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 
Problemi correlati