Excel VBA質問箱 IV

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

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


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

【56353】数字によるセル色の変更 w400 08/6/14(土) 14:52 質問[未読]
【56354】Re:数字によるセル色の変更 マクロマン 08/6/14(土) 15:01 発言[未読]
【56356】Re:数字によるセル色の変更 w400 08/6/14(土) 19:22 質問[未読]
【56357】Re:数字によるセル色の変更 マクロマン 08/6/14(土) 19:51 発言[未読]
【56359】Re:数字によるセル色の変更 w400 08/6/14(土) 23:06 発言[未読]
【56361】Re:数字によるセル色の変更 カウボーイズ 08/6/15(日) 1:24 回答[未読]
【56366】Re:数字によるセル色の変更 w400 08/6/15(日) 15:37 お礼[未読]
【56358】Re:数字によるセル色の変更 マクロマン 08/6/14(土) 20:04 発言[未読]

【56353】数字によるセル色の変更
質問  w400  - 08/6/14(土) 14:52 -

引用なし
パスワード
   セルに0〜9の数字を入れるとセルの色が指定された色に染まるようにしたいと思い、いろいろと調べてここまではできたのですが、何も数字の入っていないセルまで、0と同じ色になってしまいます。
どのようにすれば、空白セルを染めないようにできるのでしょうか?
よろしくお願いします。

ーーーーーーーーーーーーーーーーーーーーーーーーー

Sub coller()
ThisWorkbook.ActiveSheet.Range("A1").Select

Dim i As Integer

'行の範囲に対応させる。A1:A40なら
'For i = 1 To 40
For i = 1 To 16
'条件の数字 カラーの指定
'↓ ↓
If Range("O" & i) = 0 Then Range("E" & i).Interior.ColorIndex = 3
If Range("O" & i) = 1 Then Range("E" & i).Interior.ColorIndex = 45
If Range("O" & i) = 2 Then Range("E" & i).Interior.ColorIndex = 27
If Range("O" & i) = 3 Then Range("E" & i).Interior.ColorIndex = 35
If Range("O" & i) = 4 Then Range("E" & i).Interior.ColorIndex = 4
If Range("O" & i) = 5 Then Range("E" & i).Interior.ColorIndex = 20
If Range("O" & i) = 6 Then Range("E" & i).Interior.ColorIndex = 41
If Range("O" & i) = 7 Then Range("E" & i).Interior.ColorIndex = 29
If Range("O" & i) = 8 Then Range("E" & i).Interior.ColorIndex = 38
If Range("O" & i) = 9 Then Range("E" & i).Interior.ColorIndex = 15

Next i

End Sub

【56354】Re:数字によるセル色の変更
発言  マクロマン  - 08/6/14(土) 15:01 -

引用なし
パスワード
   ブランクセルか否かは
IsEmpty
の戻り値で判定できます。

'
が入っているだけのセルや数式の結果が""のセルは
ブランクセルとは看做されません。

MsgBox IsEmpty(ActiveCell) & vbCrLf & ActiveCell.Value

【56356】Re:数字によるセル色の変更
質問  w400  - 08/6/14(土) 19:22 -

引用なし
パスワード
   すいません。難しすぎてわかりませんでした。
簡単にいうと、ある範囲のセル(a1:e5など)に0から9の数字が入っていた場合、セルの色をその数字によって各色をつけたいと思っています。
0なら赤、1ならオレンジ、2なら黄・・・空白なら無地のように。
よろしくお願いします。

【56357】Re:数字によるセル色の変更
発言  マクロマン  - 08/6/14(土) 19:51 -

引用なし
パスワード
   いろんな条件で条件分岐してやる必要があります。
参考にしてください。
アクティブセルを対象にしています。

Sub test()
If IsEmpty(ActiveCell) = True Then 'ブランクセル
  MsgBox "ブランクセルです。"
ElseIf IsNumeric(ActiveCell.Value) = False Then '数値以外
  MsgBox "数値以外"
ElseIf Round(ActiveCell.Value, 0) <> ActiveCell.Value Then '整数以外
  MsgBox "小数点以下あり"
ElseIf 1 > ActiveCell.Value Or 9 < ActiveCell.Value Then '0以下、あるいは10以上
  MsgBox "0以下、あるいは10以上です。"
Else '1〜9
  Select Case ActiveCell.Value
  Case 1 '1の場合
   MsgBox "1"
  Case 2 '2の場合
   MsgBox "2"
  Case 3 '3の場合
   MsgBox "3"
  Case 4 '4の場合
   MsgBox "4"
  Case 5 '5の場合
   MsgBox "5"
  Case 6 '6の場合
   MsgBox "6"
  Case 7 '7の場合
   MsgBox "7"
  Case 8 '8の場合
   MsgBox "8"
  Case 9 '9の場合
   MsgBox "9"
  End Select
End If
End Sub

【56358】Re:数字によるセル色の変更
発言  マクロマン  - 08/6/14(土) 20:04 -

引用なし
パスワード
   ↑はあくまでもセル内容判定の参考です。
w400さんのコードに↓を付け加えるだけでもいけます。

If Range("O" & i).Value = "" Then Range("E" & i).Interior.ColorIndex = Range("E" & i).Interior.ColorIndex

【56359】Re:数字によるセル色の変更
発言  w400  - 08/6/14(土) 23:06 -

引用なし
パスワード
   マクロマンさん、「If Range("O" & i).Value = "" Then Range("E" & i).Interior.ColorIndex = Range("E" & i).Interior.ColorIndex」
を追加してやってみたのですがなかなか上手くいかないもので、数字が入っていないセルまで、0が入っているセルと同様の色がついてしまいます。
難しいです。

【56361】Re:数字によるセル色の変更
回答  カウボーイズ  - 08/6/15(日) 1:24 -

引用なし
パスワード
   こんばんは
最初のマクロマンさんのレスで全てが解決しますが・・・
IsEmpty が難しいとの事ですが、ヘルプは見てみましたか?

If IsEmpty(Range("A1")) = True Then
  'A1セルにはデータが無い
Else
  'A1セルに何かデータがある 数値の0もここに分岐されます
End If

w400さんのコードに組み合わせるなら

For i = 1 to 16
  If Not IsEmpty(Range("O" & i)) Then
    Select Case Range("O" & i).Value
      Case 0
        Range("E" & i).Interior.ColorIndex = 3
      ..
      ...
      Case 9
        Range("E" & i).Interior.ColorIndex = 15
    End Select
  End If
Next i

こんな感じでどうでしょうか?

【56366】Re:数字によるセル色の変更
お礼  w400  - 08/6/15(日) 15:37 -

引用なし
パスワード
   マクロマンさん、カウボーイズさん、何とかお二人のアドバイスの元、思っていた通りにできました。
どうもありがとうございました。

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