ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの条件付書式

  • mixiチェック
  • このエントリーをはてなブックマークに追加
お世話になります。

条件付書式で4つ以上の設定をしたいのです。

書式→条件付書式で設定する場合は
(セルにRcの文字列が含まれていた場合)としたいので
『数式が』の条件で[ =match("*Rc*",指定した範囲の左上隅のセル,0) ]
で、色は赤。

2つ目以降は"*Rc*"の内容を変えて計7つの条件で設定したいと思っています。
(色は思案中)

数が多いのでVBAでやる必要があると思い、マクロの記録をして修正しようと思ったのですが、ちょっと分かりませんでした。

範囲の指定は

With Worksheets("sheet1")
Dim Irow As Long
Irow = .Range("C" & Rows.Count).End(xlUp).row
Dim lcol As Long
lcol = .Cells(3, 4).End(xlToRight).Column

 .Range(.Cells(3, 4), .Cells(Irow, lcol))

として、D3セルから任意の範囲になります。

よろしくお願いします。


コメント(10)

すいません。仕様はexcel2003になります。
条件付書式は3つまでしか指定できませんが、kenicさんが表示してくださっているのはおそらく2007では無いでしょうか?
もしくは2003でもふつうにやるやり方が実はあったりするのでしょうか?

できました!!

Sub Test()

With Worksheets("sheet1")
Dim Irow As Long
Irow = .Range("c" & Rows.Count).End(xlUp).row
Dim lcol As Long
lcol = .Cells(3, 4).End(xlToRight).Column


Dim c As Object
For Each c In .Range(.Cells(3, 4), .Cells(Irow, lcol))
If c.Value Like "*Rc*" Then
c.Font.ColorIndex = 3
ElseIf c.Value Like "*Ra*" Then
c.Font.ColorIndex = 4
ElseIf c.Value Like "*Rb*" Then
c.Font.ColorIndex = 5
ElseIf c.Value Like "*Rd*" Then
c.Font.ColorIndex = 6
ElseIf c.Value Like "*Rf*" Then
c.Font.ColorIndex = 7

End If
Next c
End With
End Sub

こんな感じでいけそうです。
もし、どなたかご覧になってアドバイスなどいただけたらありがたいです。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Me.Range("D3:H13")) Is Nothing Then
    With Target
      If .Text Like "*Rc*" Then
        .Font.ColorIndex = 3
      ElseIf .Text Like "*Ra*" Then
        .Font.ColorIndex = 4
      ElseIf .Text Like "*Rb*" Then
        .Font.ColorIndex = 5
      ElseIf .Text Like "*Rd*" Then
        .Font.ColorIndex = 6
      ElseIf .Text Like "*Rf*" Then
        .Font.ColorIndex = 7
      Else
        .Font.ColorIndex = xlColorIndexAutomatic
      End If
    End With
  End If
End Sub

入力の度に実行させるのは少々面倒では?
なので、イベントプロシージャで実行するようにすればいかがでしょうか。
> すいません。仕様はexcel2003になります。

そういうことは一番はじめに書けよ。
つーかそんなことやってないで、さっさと2007にすればいいのではないの?
変数やIfを使わないでできる、極限まで短いプログラムを目指し、自分も考えてみました。

Sub NEWTEST()
[D3].Select
Do Until ActiveCell.Value = ""
Range(ActiveCell.Address, ActiveCell.End(xlToRight).Address).Font.ColorIndex = 1 + 2 * InStr(ActiveCell.Value, "Rc") + 3 * InStr(ActiveCell.Value, "Ra") + 4 * InStr(ActiveCell.Value, "Rb") + 5 * InStr(ActiveCell.Value, "Rd") + 6 * InStr(ActiveCell.Value, "Rf")
ActiveCell.Offset(1).Select
Loop
End Sub
返事遅れてすいません!!

kenicさん
 そうですね。おっしゃるとおりです。

Goldenさん
 ありがとうございます。参考にさせていただきます。
Privagte sub は、まだ(なんとなく)トライしたことが無かったのですが、さすが便利ですね。勉強してみます。

1÷0さん
 すごいですね。短い! データ自体が空欄が所々にあるのでそのままでは使えませんが(一番初めに書いておくべきですね。はい。げっそり)大いに参考になります。ちなみに僕が目指しているのは最初に動かしたときにエラーにならないマクロです(そんなレベルです。ほっとした顔
主さんトピずれすみません。


kenic さん、誰でも歓迎してくれる寛容さがあるはず(だってトップに書いてある)なので、誰にも「うわ、いやだな」と思われないような行動を取って欲しいです。受け止めるけど受け止めてもらえないんじゃ切ないでしょ?

日本語には色んな言いまわしができます。

あえてその言葉を使わなくても、あなたの思いは伝わります。

それと「さっさと2007にすれば?」というのはトピずれなのでお控えなさった方が宜しいかと思います。

以上、トピずれ失礼致しました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。