• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelマクロの記述をもっとわかりやすくしたいのですが、どなたかご教)

Excelマクロの記述をわかりやすくする方法

このQ&Aのポイント
  • Excelマクロの記述をわかりやすくする方法について教えてください。
  • Excel2007を使用して、マクロの記述を省略して見やすくする方法を教えてください。
  • 特定の範囲に値が入っている場合にマクロを実行する方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

条件付書式の設定をVBAで実行されていると思いますが AにB列に同じ値があれば、色をつける と云ったことでしょうか。 これを実行するたびに条件付書式が追加されていきますよね。 条件付書式の設定には限りがありますので 何度も実行するうちに エラーが出るはずです。 この様な操作をわざわざVBAで実行する必要があるのかという疑問に駆られます。 A列全体を選択して 条件付書式 数式が =COUNTIF(B:B,A1)>0 とA列全体に条件付書式を一度設定してしまえばデータが増えても大丈夫ではないでしょうか? B列も同様です。 VBAの勉強という意味で Range("A2:A1000").Select を Range("A2:A" & Range("A2").End(xlDown).Row).Select とかでデータが入っている最後の行番号が取得できます。 "=COUNTIF($B$2:$B$1000,A2)>0" なども同様ですね "=COUNTIF($B$2:$B$" & Range("A2").End(xlDown).Row & ",A2)>0" 但しこの場合、お勧めはしませんが。 VBAを使う目的があれば質問していただいたほうがより良い回答が得られると思います。

blackcat77
質問者

お礼

助言ありがとうございました。VBAを使う目的は、週毎にデータが約200行ずつ増えていくため「マクロで作成したほうが手間を省くことができる」と考えた次第です。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

>省略できるものは省略して見やすくしたいのですが、どこを修正していいのか困っています 今の所、きちんと動いているのでしたら、もう考えないほうがよいですね。しょせん、記録マクロは、VBAプログラミング・コードは違ってきてしまうものです。それは、直したところで、以下の程度にしかなりません。見やすくっていっても、読めないのは実力不足だと思ったほうがよいと思います。(ただし、意味が分かる・分からないは別問題)それと、凝った色をつけるという目的がなければ、もう少し、コードは簡単になるはずです。サンプルコードを使ったほうがよいと思います。 ただ、Selection をなくすということは、R1C1型にしなければならないという問題が発生してしまいます。 それから、条件付き書式は、数式は、= COUNTIF(A:A,B2)でもよいのですが、範囲は、限定させたほうがよいです。そうしない、ファイルの巨大化を招きかねません。 以下、実際には、マクロは試しておりません。 '// Sub CHKr()  Dim rc As Variant  With Range("A2", Cells(Rows.Count, 1).End(xlUp))   For Each fc In .FormatConditions    fc.Delete   Next   .FormatConditions.Add Type:=xlExpression, _   Formula1:="=COUNTIF(" & .Offset(, 1).Address(1, 1, xlR1C1) & ",RC)>0"   .FormatConditions(.FormatConditions.Count).SetFirstPriority   With .FormatConditions(1).Interior    .PatternColorIndex = xlAutomatic    .ThemeColor = xlThemeColorAccent2    .TintAndShade = 0.599963377788629   End With   .FormatConditions(1).StopIfTrue = False      .FormatConditions.Add Type:=xlExpression, _   Formula1:="=COUNTIF(" & .Address(1, 1, xlR1C1) & ",RC[1])>0"   .FormatConditions(.FormatConditions.Count).SetFirstPriority   With .FormatConditions(1).Interior    .PatternColorIndex = xlAutomatic    .ThemeColor = xlThemeColorAccent2    .TintAndShade = 0.599963377788629   End With   .FormatConditions(1).StopIfTrue = False  End With End Sub  

blackcat77
質問者

お礼

助言ありがとうございました。下手にいじって作動しなくなると困るので、現状使用します。

すると、全ての回答が全文表示されます。
  • hoiho1010
  • ベストアンサー率11% (13/113)
回答No.1

その前に、質問をもっとわかりやすくしよう! ナニをしたいコードなのかが書いてない!

すると、全ての回答が全文表示されます。

関連するQ&A