2016-10-28 5 views
0

5番目に表示される行ごとに下限ボーダーを適用したいと考えています。VBA可視セルのみ5行ごとにセルボトムボーダーを作成する方法

ループは、行14で始まり、行200

ループは、細胞内の値(I、「D」)を探すようにするため、私は希望を介して継続します。つまり、すべてi番目行D列にあります。

現在、私はx = 0に設定した行にObject Requiredエラーが発生しています。これは、xを整数の先頭に宣言して以来混乱しています。

Sub Border() 

Dim i As Integer 
Dim x As Integer 
Dim sumsht As Worksheet 
Set sumsht = ThisWorkbook.Sheets("Sheet1") 

x = 0 

    For i = 14 To 200 
    x = sumsht.Cells(i, "D") + x 
     If x = 5 Then 
      With Worksheets("Sheet1").Rows(i).Borders(xlEdgeBottom) 
       .LineStyle = xlContinuous 
       .Weight = xlThin 
       .ColorIndex = 1 
      End With 
     Else 
     End If 
    Next i 

End Sub 
+3

xは、それが変数だ、オブジェクトではありません。 "Set"を削除する... 'x = 0' – OldUgly

+0

' Set'は、オブジェクト変数の代入のために予約されたキーワードです。オブジェクト変数は、ワークブック、ワークシート、範囲、またはコントロール(テキストボックス、コンボボックスなど)のようなものです。 IntegerはVBAによってオブジェクトと見なされないので、Set変数はInteger変数の代わりにObject変数を必要とするため、エラーを引き起こします。その行から 'Set'を削除するだけです。 – tigeravatar

+0

あなたはsumshtに何も設定していません。それはオブジェクトです。 – OldUgly

答えて

1

これを試してください。行の高さを考慮する必要があります。

他にも述べたように、setは変数(xなど)だけでなく範囲とともに使用されます。 sumshtも使用しますが、どこにも定義しないでください。他の境界線を削除する

Option Explicit 
Sub add_lines() 
Dim rw, ct As Integer 


ct = 0 

For rw = 14 To 200 
    If Rows(rw).Height <> 0 Then 
     ct = ct + 1 
    End If 
    If ct = 5 Then 
     With Worksheets("Sheet1").Rows(rw).Borders(xlEdgeBottom) 
       .LineStyle = xlContinuous 
       .Weight = xlThin 
       .ColorIndex = 1 
      End With 
     ct = 0 
    End If 
Next rw 

End Sub 

はこれを使用する(感謝@Comintern):

Range("A1:D22").Borders.LineStyle = xlLineStyleNone 
+0

これは素晴らしいです!ループの前に前の行の境界線を削除する方法はありますか? – Max

+0

@Max既存のすべての罫線を削除することを意味しますか?または何? – atclaus

+0

まあまあです。私が境界を取り除いている範囲を分離することができれば素晴らしいだろうが。 – Max

関連する問題