2016-07-22 11 views
0

上のボーダーが追加されます。セルが空でない場合は、上のボーダーを追加します。

Sub getBorders() 
Dim rngToChange As Range 
Dim C As Range 
Set rngToChange = ActiveSheet.Range("B6:C10") 

For Each C In rngToChange 
    If C <> "" Then 
     C.Borders(xlEdgeTop).LineStyle = (xlContinuous) 
     C.Borders.Weight = xlThin 
     C.Borders.ColorIndex = xlAutomatic 
    Else 
     C.Borders(xlEdgeTop).LineStyle = xlNone 

    End If 

Next 
End Sub 

ただし、最後の行では、下端が削除されます。どのようにループを変更するには?

enter image description here

+0

あなたの最初の状況は何ですか?限り、私は行10の下の境界線に触れていないことを伝えることができます。したがって、そこに最初に国境があった場合、それはまだそこにあるはずです。または、「削除する」という言葉は、実際には「追加しない」という意味ですか? – NiH

+0

開始時には下の境界線がありますが、上記のコードを実行すると –

+0

が消えてしまい、まったく同じコードと同じ設定が写真のものと同じですか?私のマシンではうまく動いているので... @ジョーダンの答えはうまくいくはずですが、それは不要です。 – NiH

答えて

1

あなたは、「C」の最後の行にあるかどうかを確認して、条件が満たされた場合下の枠線を適用することができます:

Sub getBorders() 
Dim rngToChange As Range 
Dim C As Range 
Set rngToChange = ActiveSheet.Range("B6:C10") 

For Each C In rngToChange 
    If C <> "" Then 
     C.Borders(xlEdgeTop).LineStyle = (xlContinuous) 
     C.Borders.Weight = xlThin 
     C.Borders.ColorIndex = xlAutomatic 
    Else 
     C.Borders(xlEdgeTop).LineStyle = xlNone 
    End If 
    'If you always know the end of your range simply replace 10 with the end row 
    If C.Row = 10 Then 
     C.Borders(xlEdgeBottom).LineStyle = (xlContinuous) 
     C.Borders.Weight = xlThin 
     C.Borders.ColorIndex = xlAutomatic 
    End if 
Next 
End Sub 

代わりにあなたがActiveSheet.Cells(Rows.Count, "B").End(xlup).Rowようなもので10を置き換えることができますあなたは範囲の終了位置が、列B

0

で最後の非空のセルを選択したいかわからない場合は

もこれを試すことができます3210
Sub getBorders() 
    Dim rngToChange As Range 
    Dim C As Range 
    Set rngToChange = ActiveSheet.Range("B6:C10") 

    For Each C In rngToChange 
     If C <> "" Then 
     C.Borders(xlEdgeTop).LineStyle = (xlContinuous) 
     C.Borders.Weight = xlThin 
     C.Borders.ColorIndex = xlAutomatic 
     Else 
    If C = "B10" Or C = "C10" Then 
     Else 
     C.Borders(xlEdgeLeft).LineStyle = (xlContinuous) 
     C.Borders(xlEdgeRight).LineStyle = (xlContinuous) 
     C.Borders(xlEdgeTop).LineStyle = xlNone 
    End If 
End If 

Next 
End Sub 
関連する問題