2016-09-29 7 views
1

最近の投稿のデータ行を強調表示するために、私の質問re:codeに対する回答が届きました。 Shading Row Postデータの行を強調するマクロがExcelワークブックで実行されない

私が使用しているコードは、その投稿のもので、Excel 2013のwkbkテストではwkshtが1つあり、デスクトップに保存されています。

wkbkにコードを貼り付ける必要があります。多くのwkshtsがあり、通常はネットワークドライブ上のマクロが有効になっている共有ブックですが、このコードを追加するには共有から取り除きました。 (私はこのwkbkの別のモジュールで、コメントのサイズを変更して動作します)。主にwksht 3のScheduleという名前の強調表示が必要ですが、それが他のwkshtsにも適用できるなら理想的でしょう。私が試した何

VBAで、私は私のwkbkの下で第二のモジュール(モジュール2)を挿入したものの

  1. 。私はそれをコンパイルして保存し、[開発者]タブの[マクロ]で実行しましたが、何も起こりませんでした。
  2. VBAでは、このワークシートを右クリックしてコードを表示し、そこにコードを貼り付けて保存し、上記と同じように実行して何も起こりませんでした。
  3. 私はSchedule wkshtを右クリックしてそこにコードを貼り付けて保存しました。同じことが何も起こりませんでした。
  4. また、「マクロ」ダイアログボックスの「マクロイン:」の部分には、このブック、すべての開いているブック、およびブックの名前であるドロップダウンがすべて使用されています。
  5. 私はマクロ設定を変更していません。常に通知付きのすべてのマクロを無効にしています。

間違って他のwkshtsにも何もしません。私はチェックした。

私は助けていただきありがとうございます。ここに私のプロジェクトウィンドウは次のとおりです。

VBA Project window

Sub colorNew() 
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 = 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 

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

@ YowE3K、#YowE3Kありがとう、もう一度!はい、私のデータは行4で始まるので、r = 2をr = 4に変更しました。また、最初の2つの列を隠していたので、 "B"を "D"と "C" "E"にする。答えとして回答を追加したいのかどうか分かりませんので、回答としてマークして役立てることができます。私はあなたがしているかどうかを確認するためにしばらくチェックしていきます!私はあなたがコードを作ったこのb/cを見てうれしく思います。あなたの助けをありがとう! – sturdy267

+1

OK - 私は回答として追加しました(主に質問が "回答"とマークされるようにすることができます).LOL – YowE3K

答えて

1

コードを実行したときにアクティブだったワークシートのセルB2には何かがありますか?

マクロは2行目から開始し、1行目に何もないとすぐに停止するので、B2が空の場合はすぐに停止します。

1

あなたはモジュールにコードを置くことについて正しいです。モジュールにコードが表示されていることを確認してください。

最初の実行可能な行colourIt = Falseに移動し、F9を押します。ウィンドウにブレークポイントが挿入されます(左に赤い点、線に赤いハイライトが表示されます)。ブレークポイントが設定されたら、コードを実行してみてください。

マクロが実行されている場合は、この行で停止し、黄色で強調表示されます(そこにエラーがあるかのように)。黄色の強調表示が表示されない場合、マクロは実行されていません。この情報は、問題の内容を絞り込むのに役立ちます - 実行されていないか、実行中ですが何もしていませんか?作業が終了したら、F5キーを押して実行を続行するか、ツールバーの[停止]ボタンを使用してマクロを停止することができます。バックcolourIt = Falseに行くと明らかにもう一度F9を打つ、設定が完了したら

With .Range(.cells(r,"A") ,... etc).interior 
    .color = colour 
    .pattern = xlSolid 
End With 

それが実行されているが、何もしていない場合、ブロックでのあなたの適用の行を変更してみてください、追加の行を追加します。ブレークポイント。

幸運を祈る!

+0

むしろ特定のシートを参照しようとしてくださいActivesheetよりも。コードは – Animesh

+0

@Werrf、#Werrf、ありがとうございます。私が間違えました。 #このコードを作成したYowE3Kは、ありがたく私の投稿を見て、助けました。私は、実際のワークブックよりも少し異なって設定されたスプレッドシート、4対2などの行をテストしました。私はF9のトリックを教えてくれてありがとうb/c私はそれをする方法を理解したことはありません!私はあなたの助けに感謝します。 – sturdy267

1
Sub colorNew() 
Dim r As Long 
Dim colourIt As Boolean 
Dim colour As XlColorIndex 

colourIt = False 

With ThisWorkbook.Sheets("Schedule") 

    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 = 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 
     'Point to the next row of data 
     r = r + 1 
    Loop 
End With 
End Sub 
+0

#Animesh、ご協力いただきありがとうございます。私はこのワークブックを追加するのと同じように簡単に何かできることを望んでいたが、私はちょうどどこを知らなかった。これは将来役立ちます。私の問題は、上記の私のコメントでわかるように、カラムなどを追加したことでした。私はあなたの助けに感謝します!! – sturdy267

関連する問題