43

特定の範囲内のすべてのセルの周りに境界線を追加する単純な関数を作成しようとしています。素晴らしい記録を使用すると、これは非常に役に立たない大量のコードを生成します。以下のコードは、データの「テーブル」を表示します。この範囲の各セルの周りに境界線を追加したいと思います。オンラインでは、これに対する単純または明確な答えを見つけることができませんでした。

すべてのヘルプは大歓迎です!

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
4

7 に答える 7

132

範囲内のすべてのセルの周りに境界線を設定するには、1 行のコードのみが必要です。

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

各セルの境界線に複数の効果を適用することも簡単です。

例えば:

Sub RedOutlineCells()
    Dim rng As Range

    Set rng = Range("A1:F20")

    With rng.Borders
        .LineStyle = xlContinuous
        .Color = vbRed
        .Weight = xlThin
    End With
End Sub
于 2012-10-29T21:53:51.710 に答える
12

以下は、パラメーターとして任意の範囲で呼び出すことができます。

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

例:

Call SetRangeBorder(Range("C11"))
Call SetRangeBorder(Range("A" & result))
Call SetRangeBorder(DT.Cells(I, 6))
Call SetRangeBorder(Range("A3:I" & endRow))
于 2012-10-29T13:26:52.167 に答える
10

作成するすべてのコード化された Excel ワークブックに追加する 15 のサブルーチンのセットがあり、これはその 1 つです。次のルーチンは、領域をクリアして境界線を作成します。

サンプルコール:

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

サブルーチン:

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
于 2016-03-25T21:38:32.033 に答える
6

これが別の方法です

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
于 2012-10-29T19:21:04.477 に答える
1

境界線を追加するには、これを試してください。たとえば、次のようにします。

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

これは C# で行ったので、構文が正しいことを願っています。

于 2012-10-29T12:41:57.987 に答える