2016-07-19 19 views
1

非常に迅速に進むための項目のリストがあります。列の1つである列Fがかなり頻繁に変更されます。個々のエントリを個別に処理するので、列Fの値が変わるところで行全体を強調表示して、見やすくしたいと考えています。ここで私はこれまでに書いたものです:可視範囲内のセル値を見つける方法

Dim visRng As Range, rngTop As Long, rngBot As Long 
rngTop = ActiveWindow.visiblerange.Row 
rngBot = ActiveWindow.visiblerange.Row + ActiveWindow.visiblerange.Rows.Count - 2 
visRng = Worksheets("Work").Range("F" & rngTop, "F" & rngBot) 

    For Each Cell In visRng 
     If Cell.Value = Cell.Offset(-1).Value _ 
      And Cell.Interior.ColorIndex = 0 Then 
      Cell.EntireRow.Interior.ColorIndex = 3 
     End If 
    Next 

私は「visRng」を定義する行でエラーを得続ける:

実行時エラー「91」: オブジェクト変数またはWithブロック変数設定されていません

私はVBAにはかなり新しく、独学ですので、すべての専門用語を理解することはできません。どんな助けでも大歓迎です!

+0

'セットvisRng =' - –

+0

@TimWilliamsありがとうオブジェクト変数に何かを割り当てるときに 'Set'を使用する必要!!そんな単純な答えだったとは思えません。 – TradorDave

答えて

0

説明を参照してください。

Sub FindAndColor() 

    Dim visRng As Range 
    Dim rngCell As Range 


    '/ Set to range object. Yiu can't simply asign to it. 
    '/ This will get rid of Error 91 
    '/ Just Use VisibleCells of the usedRange 
    Set visRng = Worksheets("Work").UsedRange.SpecialCells(XlCellType.xlCellTypeVisible) 

    '/ Loop through the range 
    For Each rngCell In visRng.Cells 
     If rngCell.Row <> 1 Then 
     If rngCell.Value = rngCell.Offset(-1).Value _ 
     And rngCell.Interior.ColorIndex = -4142 Then '/ -4142 is the default interior colorindex 
      rngCell.EntireRow.Interior.ColorIndex = 3 
     End If 
     End If 
    Next 

End Sub 
関連する問題