2012-03-16 9 views
5

Chcę dodać linię graniczną na górze i na dole linii granicznej ogólnej liniiExcel VBA - całkowita linia dodać ramkę na górze i na dole tylko

Eg. Mam dane z wierszy od 2 do 3 i z kolumn 3-4, następnie dodaję całkowitą linię, która sumuje wiersz 2-3 w wierszu 5.

Chcę dodać linię graniczną na górze i na dole rzędu 5 oraz tylko do kolumny 4.

Czy mogę używać zmiennych LastRow + 2 (uwaga Mam pustą linię między ostatnim wierszem danych i gdzie jest cała linia) i LastColumn jak w zakresie ("A5: D5"). Wybierz, czy będzie to zmienne za każdym razem?

mój bieżący kod:

Range("A5:D5").Select 
With Selection.Borders(xlEdgeTop) 
    .LineStyle = xlContinuous 
    .Weight = xlThin 
    .ColorIndex = xlAutomatic 
End With 
With Selection.Borders(xlEdgeBottom) 
    .LineStyle = xlContinuous 
    .Weight = xlThin 
    .ColorIndex = xlAutomatic 
End With 

Odpowiedz

3

Myślę, że rzeczą NexttRow nadal jest dobrym pomysłem, a kod może zostać uproszczone w dół, jak również, to dodaje sumę i formatuje wiersz sum z ROW2 do dołu danych, gdziekolwiek, które mogą być:

NR = Range("A" & Rows.Count).End(xlUp).Row + 1 

Range("C" & NR, "D" & NR).FormulaR1C1 = "=SUM(R2C:R[-1]C)" 
With Range("A" & NR, "D" & NR) 
    .Borders(xlEdgeTop).Weight = xlThin 
    .Borders(xlEdgeBottom).Weight = xlThin 
End With 
2

Tak naprawdę nie potrzeba LastRow lub zmienne LastCol. Wystarczy odwołać się do ostatniego wiersza takiego zakresu:

With Range("A5:D5") 
    With .Rows(.Rows.Count) 
     With .Borders(xlEdgeTop) 
      .LineStyle = xlContinuous 
      .Weight = xlThin 
      .ColorIndex = xlAutomatic 
     End With 
     With .Borders(xlEdgeBottom) 
      .LineStyle = xlContinuous 
      .Weight = xlThin 
      .ColorIndex = xlAutomatic 
     End With 
    End With 
End With 

Można uogólnić to na podprogram, do którego podaje się zakres.

Powiązane problemy