Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


47 / 13645 ツリー ←次へ | 前へ→

【82205】セルの背景色で判断する April 23/10/20(金) 11:10 質問[未読]
【82206】Re:セルの背景色で判断する MK 23/10/20(金) 11:14 発言[未読]
【82207】Re:セルの背景色で判断する MK 23/10/20(金) 11:17 発言[未読]
【82208】Re:セルの背景色で判断する MK 23/10/20(金) 11:21 発言[未読]
【82209】Re:セルの背景色で判断する April 23/10/20(金) 11:26 回答[未読]
【82210】Re:セルの背景色で判断する MK 23/10/20(金) 11:30 発言[未読]
【82211】Re:セルの背景色で判断する MK 23/10/20(金) 11:46 発言[未読]
【82212】Re:セルの背景色で判断する MK 23/10/20(金) 12:05 発言[未読]
【82213】Re:セルの背景色で判断する April 23/10/20(金) 13:18 回答[未読]
【82217】Re:セルの背景色で判断する MK 23/10/20(金) 21:30 発言[未読]
【82221】Re:セルの背景色で判断する April 23/10/25(水) 14:02 お礼[未読]

【82205】セルの背景色で判断する
質問  April  - 23/10/20(金) 11:10 -

引用なし
パスワード
   こんにちは、下記の件につきましてご教示頂けたらと思います。

Sheet1のA〜M列内で背景色に赤のセルがあればB2セルに「NG」、
他の背景色だったり色がなければB2セルに「OK」を出すマクロを考えています。

下記の通りコードを作成したのですが、エラーになってしまいます。
どのように修正すればよろしいでしょうか。

Sub TEST()

  Dim count As Long

  If ActiveSheet.Range("A:M").Interior.ColorIndex = 3 Then '赤を指定
    count = count + 1
  End If
  Next
  If count = 0 Then
    Cells(2, 8).Value = "OK"
  Else
    Cells(2, 8).Value = "NG"
  End If
End Sub

【82206】Re:セルの背景色で判断する
発言  MK  - 23/10/20(金) 11:14 -

引用なし
パスワード
   直接の回答ではありません。

COUNTの初期化がされてませんが、ここでは
エクセル君が忖度して初期値が0になってると思います。

予約語かわかりませんが、
COUNT
というのは変数名には不適切だと思います。

【82207】Re:セルの背景色で判断する
発言  MK  - 23/10/20(金) 11:17 -

引用なし
パスワード
   コードをよく見たらループにすらなってないですね。
ループでセル範囲を見ていくようにしたらいいと思います。

【82208】Re:セルの背景色で判断する
発言  MK  - 23/10/20(金) 11:21 -

引用なし
パスワード
   参考HPです。

ht tps://www.hokkyokun.com/findmethod-format/

【82209】Re:セルの背景色で判断する
回答  April  - 23/10/20(金) 11:26 -

引用なし
パスワード
   皆様ありがとうございます。
ご指摘いただきまして修正しましたが、赤い背景色のセルが無くてもNGが表示されてしまいます。
この理由を教えていただけませんか?

  
  If ActiveSheet.Range("A:M").Interior.ColorIndex = 3 Then
    Cells(2, 8).Value = "OK"
  Else
    Cells(2, 8).Value = "NG"
  End If

【82210】Re:セルの背景色で判断する
発言  MK  - 23/10/20(金) 11:30 -

引用なし
パスワード
   私のレスをよく見てください。

【82211】Re:セルの背景色で判断する
発言  MK  - 23/10/20(金) 11:46 -

引用なし
パスワード
   ↓のコードを実行してみてください。

MsgBox ActiveSheet.Range("A:M").Interior.ColorIndex = 3

A1〜M列の最大行全てのセルの背景色の色インデックスが3だったら
Trueが返ります。

一つでもセルの背景色の色インデックスが3でないのがあるとエラーになります。

本当に1行目〜最大行(バージョンによって最大行数が変わります)の背景色
を対象にする必要があるのですか?

【82212】Re:セルの背景色で判断する
発言  MK  - 23/10/20(金) 12:05 -

引用なし
パスワード
   >Interior.ColorIndex

念のため書いておきます。

ColorIndexは、デフォルトでは3は赤になっていますが、
ユーザーがパレットの色を変えた場合は3が別の色に
なってる可能性があります。
ほとんどの人はデフォルト部分は変えないとは思いますが。

RGBで指定する
VbRed

などでも色を指定できます。

【82213】Re:セルの背景色で判断する
回答  April  - 23/10/20(金) 13:18 -

引用なし
パスワード
   何度もありがとうございます。
リンク先も読ませていただいたのですが、理解に乏しくうまくいきません。
良ければコードを頂いてお教えくださいませんでしょうか。

背景色は赤いときのみNGの表示を行いたいです。

【82217】Re:セルの背景色で判断する
発言  MK  - 23/10/20(金) 21:30 -

引用なし
パスワード
   > If ActiveSheet.Range("A:M").Interior.ColorIndex = 3 Then

これは、
A1〜M1048576の全てのセルの背景色が赤の時のみTrueが返ってきます。

URLを貼ったFindFormatの使用例です。

Sub test2()
Dim ws As Worksheet
 With Application.FindFormat
  .Clear
  .Interior.Color = vbRed
 End With
 Set ws = ActiveSheet
 If ws.Range("A:M").Find(What:="", searchformat:=True) Is Nothing Then
   MsgBox "赤無し"
 Else
   MsgBox "赤有り"
 End If
End Sub

【82221】Re:セルの背景色で判断する
お礼  April  - 23/10/25(水) 14:02 -

引用なし
パスワード
   ▼MK さん:
>> If ActiveSheet.Range("A:M").Interior.ColorIndex = 3 Then
>
>これは、
>A1〜M1048576の全てのセルの背景色が赤の時のみTrueが返ってきます。
>
>URLを貼ったFindFormatの使用例です。

お礼が遅くなりまして大変申し訳ありません。
頂きましたコードを使用しまして、Trueの場合「OK]表示するように作ってみました。

これからもっと勉強します。
お世話になりました。

47 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free