2017-09-12 8 views
0

スプレッドシートの罫線を作成しようとしていて、2つの値の比較を行っています。これを行うには、範囲内の行をインクリメントする必要がありますが、使用している式は増分しません。VBA 2010増分範囲の行数が増えない

あなたが代わりにこれを使用することができ、それが動作します
Set ws = Sheets(strSheetName) 
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row 
Stop 
'Create borders 
    For Each c In Range("A1:A" & lRow) 
     If Trim(c.Value) = PracticeName Then First = "A" & c.Row 
     If Trim(c.Value) = "SubTotal" Then SubTotal = "B" & c.Row 
     If Trim(c.Value) = "" Then 
     Set Rng = Sheets(strSheetName).Range(First & ":" & SubTotal) 
     Call SetRangeBorder(Rng) 
     End If 
    If Trim(c.Value) = PracticeName Then FirstDataRow = "B" & c.Row + 2 
    If Trim(c.Value) = "IDX" Then LastDataRow = "B" & c.Row 
    Stop 
    If LastDataRow <> "" And SubTotal <> "" Then 
     If Trim(c.Value) = "SubTotal" Then Range(SubTotal).Formula = "=SUM(" 
    & FirstDataRow & ":" & LastDataRow & ")" 
     'Check if Values are equal 
     Stop 
     compare1 = Range(SubTotal) 
     FinalRow = "B" & c.Row + 1 
     compare2 = Range(FinalRow) 
     'If equal set color to green 
     If compare1 = compare2 Then Range(FinalRow).Interior.ColorIndex = 4 
     'If not equal set color to red 
     If compare1 <> compare2 Then Range(FinalRow).Interior.ColorIndex = 3 
     Range("A" & c.Row) = Range("A" & c.Row).Offset(3, 0) 
     Stop 
    End If 
Next 
+0

また、Range( "A1:A"&lRow) 'の前にワークシートを追加して、正しいものを実行していることを確認してください... ws.Range(" A1:A "&lRow)'? – BruceWayne

+0

'c'(データ型)はどのように宣言しましたか? – danieltakeshi

答えて

0

For i = 1 to lRow 

そして、あなたが使用したいセルを参照:

ws.Cells(i,1).Value 

"i" が行数であり、 "1"は列番号です。これにより、必要な列の行がインクリメントされます。この方法は単に好みであり、私のために視覚化するのが簡単だと感じます。