No.1ベストアンサー
- 回答日時:
こんばんは!
>条件が不一致のセルの色(何色でも)を変化させようと・・・
とありますが、
具体的な条件提示がないので、仮にSheet1のデータでSheet2にない場合
そのデータセルの色を変える!という解釈でのコードの一例です。
標準モジュールにコピー&ペーストしてマクロを実行してみてください。
Sub test()
Dim c As Range, i As Long, j As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Sheet1") '←「Sheet1」は実際のシート名に!
Set ws2 = Worksheets("Sheet2") '←「Sheet2」も・・・
i = ws2.UsedRange.Rows.Count
j = ws2.UsedRange.Columns.Count
ws1.Cells.Interior.ColorIndex = xlNone
For Each c In ws1.UsedRange
If c <> "" And WorksheetFunction.CountIf(Range(ws2.Cells(1, 1), ws2.Cells(i, j)), c) = 0 Then
c.Interior.ColorIndex = 6 '←黄色にしています。
End If
Next c
End Sub
※ Sheet2のA1セルが空白の場合はダミーとして何かA1セルに入力しておいてください。
(Sheet2の最終行・最終列の取得ができないため)
※ 一発で解決!という訳にはいかないと思います。
あくまで叩き台としての投稿です。m(_ _)m
ありがとうございます
今回のケースはこのマクロで補完出来そうです
ただ、1点ご教授願いたいのですがですが…
1 For each文を調べたのですがイマイチ理解出来ず、具体的な動作のイメージ(どのように比較対象を検索させているのか)を教えていただけませんか?
No.3
- 回答日時:
続けてお邪魔します。
>cに関してはアクティブシートのRANGEを宣言と言うよりも、WS1をForeach文で範囲を指定させてい>るという認識でよろしいでしょうか
に関してですが、
質問文では範囲が明確でないので、あのようなコードにしましたが、
範囲がはっきりわかっているのであれば
For Each c In Selection ←範囲指定している範囲内のそれぞれの「c」という意味
処理
Next c
と一緒のコトになります。
※ 変数「c」を何型で宣言するか?
についてですが、
↓のURLの中間よりやや下の部分
「固有オブジェクト型を指定するメリット」
のところが参考にならないでしょうか?
http://officetanaka.net/excel/vba/error/compilat …
この程度でごめんなさいね。m(_ _)m
No.2
- 回答日時:
No.1です。
>For~Each に関してですが・・・
前回のコード内で
i・j はSheet2の最終行・最終列を取得しています。
COUNTIF関数の「範囲」を指定するためです。
次にCOUNTIF関数の「検索条件」が アクティブSheetの「c」になります。
この「c」をFor~Next で順番にループしています。
仮に↓の画像がSheet1だとすると
For Each c In ws1.UsedRange
・・・
・・・
Next c
これで太線内(A2:F4)が「Usedrange」となります。
これをA2から右(列方向)に順番にループすることになります。
前回のコードで
>If c <> "" And WorksheetFunction.CountIf(Range(ws2.Cells(1, 1), ws2.Cells(i, j)), c) = 0 Then
に該当するデータは 1~10 です。
※ 見た目は空白でも、数式等が入っていれば「Usedrange」となりますので、
範囲はもっと広がる可能性があります。
この程度で参考になりますかね?m(_ _)m
細部迄ご説明ありがとうございます
最後にもう一点質問させてください
cに関してはアクティブシートのRANGEを宣言と言うよりも、WS1をForeach文で範囲を指定させているという認識でよろしいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Excel(エクセル) 【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。 3 2023/03/23 17:30
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
Count Ifのセルの範囲指定に変...
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
Unionでの他のシートの参照につ...
-
VBA 空白行に転記する
-
Changeイベントで複数セルへの...
-
前回質問の続きになりますが、...
-
【VBA】特定の条件でセルをコピー
-
【Excel VBA】自動メール送信の...
-
複数シートの複数列に入力され...
-
テキストボックスから、複数の...
-
FindNextがうまくいかない
-
VBA 別ブックからの転記の高速...
-
VBAで変数の数/変数名を動的に...
-
VBAのグラフに違うシートの...
-
VBA 実行時エラー1004 rangeメ...
-
VBA別シートの最終行の次行へ転...
-
VBAで、1つのエクセルで、2つの...
-
Excel2013で切り取り禁止
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 空白行に転記する
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
Count Ifのセルの範囲指定に変...
-
VBA 別ブックからの転記の高速...
-
VBA別シートの最終行の次行へ転...
-
Changeイベントで複数セルへの...
-
複数シートの複数列に入力され...
-
ExcelのVBマクロを、バックグラ...
-
VBA 実行時エラー1004 rangeメ...
-
楽天RSSからエクセルVBAを使用...
-
【VBA】特定の条件でセルをコピー
-
100万件越えCSVから条件を満た...
-
Excel2013で切り取り禁止
-
VBAで変数の数/変数名を動的に...
-
アクセスからエクセルへ出力時...
-
Unionでの他のシートの参照につ...
-
グラフマクロで系列を変数にす...
-
Excel VBA オートフィルターで...
おすすめ情報