2016-09-28 5 views
1

VBAはよくわかりません。 Ivesleoは、「価値の変化に基づいて列全体を陰影付けする」という古い記事に答えました。 Link to Shade Row Post列Cの値の変更に基づいて値の行の終わりをシェーディングし、次に列B

私は彼のコードを使用しましたが、動作しますが、私は必要なものを変更するコードを変更する方法がわかりません。

  1. 特定の都市(C列)でプロジェクトをスケジュールする場合、私は数週間(B列)の列を持ちます。コードでは、列Bまたは(第2列/週列)の変更ごとに行が強調表示されます。その都市の一週間のすべての変化を書き留めておくコードが必要です。そうすれば、Pileyと言う別の都市に行くときに、PileyのW1N4を強調表示せず、新しい都市にいることに気づくでしょう。 2階建てのカスタムソートのようなもので、都市は最初、その後は週です。都市の変化に基づいて強調表示したくはありません。ちょうど都市に変化があり、その列内の値の変化に基づいて都市内でハイライトされていることに注意してください。
  2. どのようにしてその行のデータの最後まで行を陰にしますか?私はEnd(xlRight).Select、End(xlLeft).Select、End(xlUp).Row.Selectを試みましたが、動作しませんでした。
  3. colorItは彼が作ったものですか?私はそれが何をしているのか、そしてExcelがそれにどう対応するのかを理解していないのですか?再び、私は初心者です。ご協力ありがとうございました。

ウィーク/市

W1N1 Silverton 
W1N1 Silverton 
W2N3 Silverton 
W1N4 Silverton 
W1N4 Piley 
Sub color() 
    'Replace the 2 values of G = and C= by the number of the column containing _ 
    'the values being referenced. 
    Dim g As Long 
    Dim c As Integer 
    Dim colorIt As Boolean 

    g = 2 
    c = 2 
    colorIt = True 

    Do While Cells(g, c) <> "" 
     test_value = Cells(g, c) 
     Do While Cells(g, c) = test_value 
      If colorIt Then 
       Cells(g, c).EntireRow.Select 
       Selection.Interior.ColorIndex = 15 
      Else 
       Cells(g, c).EntireRow.Select 
       Selection.Interior.ColorIndex = x1None 
      End If 
      g = g + 1 
     Loop 
     colorIt = Not (colorIt) 
    Loop 
End Sub 

答えて

1

次のコードは、あなたの状況に合わせて調整されています:

Sub color() 
    Dim r As Long 
    Dim colourIt As Boolean 
    Dim colour As XlColorIndex 

    colourIt = False 

    With ActiveSheet 
     r = 2 ' First row of data 

     Do While .Cells(r, "B").Value <> "" 
      'See if value has changed 
      If .Cells(r, "B").Value <> .Cells(r - 1, "B").Value Or _ 
       .Cells(r, "C").Value <> .Cells(r - 1, "C").Value Then 
       colourIt = Not colourIt 
      End If 

      'Determine which colour to use on this row 
      If colourIt Then 
       colour = 15 
      Else 
       colour = xlColorIndexNone 
      End If 
      'Apply the colouring 
      .Range(.Cells(r, "B"), .Cells(r, .Cells(r, .Columns.Count).End(xlToLeft).Column)).Interior.ColorIndex = colour 

      'Point to the next row of data 
      r = r + 1 
     Loop 
    End With 
End Sub 

注:変数colourItは(colorItだったが、私はオーストラリア人なので、 English spelling !!)は単なるブール変数であるため、値はTrueまたはFalseです。このコードは、基準が変更をテストされるたびに、2つの可能な値(コードcolourIt = Not colourItを使用)を切り替えます。

投稿者編集:ありがとうございました。私はちょうどここに私の状況にさらにフィットするように変更した方法を追加したかったのです。私はそれを次のように変更しました:RGBパレットを使用して色を明るいオレンジ色に変更しました(私はそれが呼ばれていると思います)。セル(r、 "A")などb/c列Bで始まる行と列Aで始まる行をハイライト表示していました。

コメントに感謝します。

'Determine which colour to use on this row 
     If colourIt Then 
      colour = RGB(252, 228, 214) 
     Else 
      colour = xlColorIndexNone 
     End If 
     'Apply the colouring 
     .Range(.Cells(r, "A"), .Cells(r, .Cells(r, .Columns.Count).End(xlToLeft).Column)).Interior.color = colour 
+0

#ありがとうございましたあなたのご協力ありがとうございました!あなたの投稿に編集を追加しました。私は自分の状況に合わせてコードに加えたいくつかの変更を詳しく述べる必要がありました。最初の投稿/質問にそれを入れることは適切ではないと私は考えましたが、私はそれを答えとしてマークし、役に立つとマークします!ありがとう、もう一度。 – sturdy267

関連する問題