Excelマクロの記述をもっとわかりやすくしたいのですが、どなたかご教示お願いします。
Excel2007使用。下記はマクロを記録として作成しました。省略できるものは省略して見やすくしたいのですが、どこを修正していいのか困っています。
範囲は「A2:A1000、B2:B1000」としていますが、「値が入っている範囲」としたい場合はどのように記述したらよいのでしょうか。
マクロ現在勉強中です。よろしくお願いいたします。
Sub CHK()
Range("A2:A1000").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=COUNTIF($B$2:$B$1000,A2)>0"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.599963377788629
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("B2:B1000").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=COUNTIF($A$2:$A$1000,B2)>0"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.599963377788629
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
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を使う目的があれば質問していただいたほうがより良い回答が得られると思います。
助言ありがとうございました。VBAを使う目的は、週毎にデータが約200行ずつ増えていくため「マクロで作成したほうが手間を省くことができる」と考えた次第です。
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) VBA シート上にドロップダウンリストを作り、予め指定値をセットしたいのですが 1 2023/03/25 15:15
- Visual Basic(VBA) 複数セルに〇印をつけるマクロ 4 2022/09/07 05:33
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別シートからの文字を変更
-
エクセルの行の抽出について質...
-
Excel 2019 のピボットテーブル...
-
Excelのセルを飛ばして入力する
-
【マクロ】エクセルにかいてあ...
-
Excelのオートフィル
-
Excel初心者です。 詳しい方、...
-
スプレッドシート クエリ関数 1...
-
MOS365 Excel Expert / Excel R...
-
西暦や和暦の表示をyyyymmdd表...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセルの数式で教えてください。
-
スプレッドシートの関数VLOOKUP...
-
エクセルでセルに「氏名を入力...
-
エクセルで指定した日付、店舗...
-
【Excel】セル内の時間帯が特定...
-
Excelのグラフ軸について
-
Excel 2019 は、SPILL機能があ...
-
関数を教えて下さい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報