Excel VBA質問箱 IV

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

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


1340 / 13644 ツリー ←次へ | 前へ→

【75014】セルの色を検索してあったらフラグ hama 13/11/14(木) 18:48 質問[未読]
【75015】Re:セルの色を検索してあったらフラグ kanabun 13/11/14(木) 21:11 発言[未読]
【75016】Re:セルの色を検索してあったらフラグ hama 13/11/14(木) 22:39 回答[未読]
【75022】Re:セルの色を検索してあったらフラグ hama 13/11/15(金) 13:32 質問[未読]
【75023】Re:セルの色を検索してあったらフラグ kanabun 13/11/15(金) 17:38 発言[未読]
【75028】Re:セルの色を検索してあったらフラグ hama 13/11/15(金) 23:42 お礼[未読]

【75014】セルの色を検索してあったらフラグ
質問  hama E-MAIL  - 13/11/14(木) 18:48 -

引用なし
パスワード
   A列〜D列(行は増減)する範囲のセル中に背景が黄色セル
があります。黄色セルが範囲の中にあったらEセルにフラグ
(○)を入れたいのですがどのように記述すればよいでしょ
うかどなたか教えてください。よろしくお願いします。

  A列  B    C   D   E
1 黄色  色なし  色なし 色なし ○ ←E1に○を付ける
2 色なし 色なし  黄色  色なし ○
3 色なし 色なし  色なし 色なし   ←何もしない
4 色なし 黄色   黄色  黄色  ○ ←複数あってもE4列に○を付ける
・ ・   ・    ・   ・   ・
・ ・   ・    ・   ・   ・
・ ・   ・    ・   ・   ・
・ ・   ・    ・   ・   ・  

【75015】Re:セルの色を検索してあったらフラグ
発言  kanabun  - 13/11/14(木) 21:11 -

引用なし
パスワード
   ▼hama さん:

>A列〜D列(行は増減)する範囲のセル中に背景が黄色セル
>があります。黄色セルが範囲の中にあったらEセルにフラグ
>(○)を入れたいのですがどのように記述すればよいでしょ
>うかどなたか教えてください。よろしくお願いします。
>
>  A列  B    C   D   E
>1 黄色  色なし  色なし 色なし ○ ←E1に○を付ける
>2 色なし 色なし  黄色  色なし ○
>3 色なし 色なし  色なし 色なし   ←何もしない
>4 色なし 黄色   黄色  黄色  ○ ←複数あってもE4列に○を付ける
>・ ・   ・    ・   ・   ・
>・ ・   ・    ・   ・   ・
>・ ・   ・    ・   ・   ・
>・ ・   ・    ・   ・   ・  

こんにちは〜〜
FindFormat を使ったらどうでしょ?

Sub FindYellow()
  Dim r As Range, rr As Range
  Dim c As Range
  
  Application.FindFormat.Clear
  Application.FindFormat.Interior.Color = vbYellow
  Set rr = [A1].CurrentRegion.Resize(, 4)
  For Each r In rr.Rows
    Set c = r.Find("*", SearchFormat:=True)
    If Not c Is Nothing Then
      r.Cells(1, 5).Value = "○"
    End If
  Next
End Sub

【75016】Re:セルの色を検索してあったらフラグ
回答  hama E-MAIL  - 13/11/14(木) 22:39 -

引用なし
パスワード
   kanabun さん
早々の回答ありがとうございます。
感激です。

【75022】Re:セルの色を検索してあったらフラグ
質問  hama E-MAIL  - 13/11/15(金) 13:32 -

引用なし
パスワード
   ▼kanabun さん:
度々すいません。
セルの中に値があって黄色とセルの中に値がなく黄色あります。
どうすればよいのでしょうか?
"*"の部分を差し替えればよいのでしょうか?
教えてください。

For Each r In rr.Rows
    Set c = r.Find("*", SearchFormat:=True)
   If Not c Is Nothing Then
   r.Cells(1, 5).Value = "○"
    End If
 Next

【75023】Re:セルの色を検索してあったらフラグ
発言  kanabun  - 13/11/15(金) 17:38 -

引用なし
パスワード
   ▼hama さん:

>セルの中に値がなく黄色あります。
>どうすればよいのでしょうか?
>"*"の部分を差し替えればよいのでしょうか?

ブランクセルを変数rbに覚えておいて、一時的に何かデータを入れ、
色塗りが済んだら、クリアしちゃいましょう

Sub FindYellowCell()
  Dim r As Range, rr As Range, rb As Range
  Dim c As Range
  
  Application.FindFormat.Clear
  Application.FindFormat.Interior.Color = vbYellow
  Set rr = [A1].CurrentRegion.Resize(, 4)

  On Error Resume Next
  Set rb = rr.SpecialCells(xlBlanks)
  On Error GoTo 0
  If Not (rb Is Nothing) Then
    rb.Formula = "=TRUE"  'ブランクセルを TRUE式に代える
  End If

  For Each r In rr.Rows
    Set c = r.Find("*", SearchFormat:=True)
    If Not c Is Nothing Then
      r.Cells(1, r.Cells.Count + 1).Value = "○"
    End If
  Next
  If Not (rb Is Nothing) Then
    rb.ClearContents    'クリアして元のブランクセルに戻す
  End If
  
End Sub

【75028】Re:セルの色を検索してあったらフラグ
お礼  hama E-MAIL  - 13/11/15(金) 23:42 -

引用なし
パスワード
   kanabun さん
すごい、僕には発想がないです。
ありがとうございます。

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