[[20041116102053]] 『条件付き書式は3つまで?』(aya) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『条件付き書式は3つまで?』(aya)

質問します。
条件に付き書式は3つまでしかできませんか?
もし無理ならば、4つ以上の条件を付けたい場合は他に方法はありますか?
宜しくお願いします。


 どのような条件でしょうか。
 3つまでは、条件ではなく書式が3つまでです。
 条件を数式で判断すれば、減るかもしれません。
 (川野鮎太郎)

川野様ありがとうございます。
勤務の体系なんですが、「○」「T」「U」「V」「臨」「有」「欠」などがあります。

「U」のときは「緑」。「V」のときは「紫」。

「臨」のときは「青」。「有」「欠」のときは「赤」。

と、したいのですが。

宜しくお願いします。


[[20040815094808]]『入力した文字列によりセル色を識別したい』(KI)

 こちらを参考に頑張ってみてください。

 それでも判らない場合は再度、どこが判らないか質問してください^^
 (川野鮎太郎)

ありがとうございます。

参考にしてがんばってみます。
(aya)


やはり何点か質問が出てきてしまいました。

[[20040815094808]]『入力した文字列によりセル色を識別したい』(KI)には
2種類のマクロがありますが、上の方のやり方だと随時更新が出来ません。
下は入力するたび随時更新して色が付くのですが、色の指定の仕方が分かりません。

マクロ超初心者で、もうひとつ質問なんですが
番号で色が決まっているのですか?

すいません宜しくお願いします。
(aya)


        target_color = Array("A", "B", "C", "D", "E", "F")
        For i = 0 To UBound(target_color)
            If Target Like "*" & target_color(i) & "*" Then
                Target.Interior.ColorIndex = i + 3
                Exit For
            End If
        Next i

 >番号で色が決まっているのですか?
 はいきまっています。

 ↑のスクリプトの場合だと i が 0〜target_colorの数までとなって
 あてはまった部分の配列の座標プラス3をすのままの数字としているので

 color_index = (1,3,5,3,7)
 という風に配列をつくってやると
        For i = 0 To UBound(target_color)
            If Target Like "*" & target_color(i) & "*" Then
                Target.Interior.ColorIndex = color_index(i)←ここを変更
                Exit For
            End If
        Next i

 色々エラーはできる思いますががんばってみてください。mm
 (Null)

 カラーコードについては新規BOOKで
Sub test()
Dim i As Long
    For i = 0 To 56
        Range("A" & i + 1).Value = i
        Range("B" & i + 1).Interior.ColorIndex = i
    Next i
 End Sub
試してください。
(ケン)

Nullさま&ケンさまありがとうございます。

教えていただいたことをいろいろ試してみたいと思います。

ありがとうございます。

(aya)


度々の質問ですがお願いします。

 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    Dim tbl As Range
    Dim target_color

    If Target.Count > 1 Then Exit Sub
    Set tbl = Range("a1:ai50")
    If Intersect(Target, tbl) Is Nothing Then Exit Sub
        target_color = Array("A", "B", "C", "D", "E", "F")
        For i = 0 To UBound(target_color)
            If Target Like "*" & target_color(i) & "*" Then
                Target.Interior.ColorIndex = color_index(4, 25, 6, 5, 3, 2)
                Exit For
            End If
        Next i

 End Sub

A,B,C,D,E,Fにそれぞれ私なりに色を付けたくて
いろいろな方々の意見を参考に上記のようにしてみたんですが、

エラーがでてしまって表示されません。

どこかおかしいところがあると思うのですが、どこか分かりません。

教えてください。度々の質問ですが宜しくお願いします。

(aya)


 Hatchさんのコードのほうが理解しやすかったかもしれません。
 Hatchさんのをチェンジイベントに変えたものがこんな感じです。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub  'A列以外は処理中止
If Target.Count <> 1 Then Exit Sub   '複数セルは処理中止
    Select Case Target.Value
        Case "○"
            Target.Interior.ColorIndex = 1
        Case "T"
            Target.Interior.ColorIndex = 2
        Case "U"
            Target.Interior.ColorIndex = 3
        Case "V"
            Target.Interior.ColorIndex = 4
        Case "臨"
            Target.Interior.ColorIndex = 5
        Case "有"
            Target.Interior.ColorIndex = 6
        Case "欠"
            Target.Interior.ColorIndex = 6
    End Select
End Sub

 (川野鮎太郎)

川野様ありがとうございます。

お陰さまで問題解決することができました。

思い通りに色が変化します。非常にすっきりしました!!

ありがとうございます。

(aya)


質問ばかりしているayaです。

また疑問点が出てきてしまったので、お願いします。

上記は1ヶ月の勤怠管理として使い、入力したデータを月が変わったら、上記の方法で色が付いたところや数値を入力したところをクリアしたいのですが、私は普通に「数値と値のクリア」でやってしまっているので、エラーメッセージが出てしまってセルの色は付いたままです。
これをスムーズにクリアする方法を教えていただきたく再び訪れました。

これもマクロでは初歩的な質問だとは思いますが、宜しくお願いします。

(aya)


 ( ̄0 ̄;アッ 書き込むだけしかやってませんね_/ ̄|○ il||li
 そのセル範囲はどこからどこまでですか・・・。
 (川野鮎太郎)

川野様、何度も何度もお世話になっています。いつもご親切にありがとうございます。

クリアしたいセルの範囲はC6:AG155です。

宜しくお願いします。

(aya)


 (*'ω'*)......ん? マクロで色を付けるセルがC6:AG155ですか?
 出来れば今使っているコードをここに貼り付けてみてください。
 (川野鮎太郎)

はいそうなんです(*δ。δ)(*_ _)

マクロで色を付けるのがC6:AG155です。
C:AGまで月の1日目から31日目という感じで、
6:155に従業員名が並んでます。一人5行ずつで。

以下がコードです。川野様から教えていただいたことを元に作ってみました。
初心者ながらエラーを何回か出しつつ少し手を加えました。
今のところ正常に働いています。

おかしなところがあったら言って下さいm(__)m

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

    Select Case Target.Value
        Case ""
            Target.Interior.ColorIndex = 0
        Case "○"
            Target.Interior.ColorIndex = 0
        Case "T"
            Target.Interior.ColorIndex = 0
        Case "U"
            Target.Interior.ColorIndex = 4
        Case "V"
            Target.Interior.ColorIndex = 18
        Case "有"
            Target.Interior.ColorIndex = 3
        Case "欠"
            Target.Interior.ColorIndex = 3
        Case "臨○"
            Target.Interior.ColorIndex = 5
        Case "臨T"
            Target.Interior.ColorIndex = 5
        Case "臨U"
            Target.Interior.ColorIndex = 5
        Case "臨V"
            Target.Interior.ColorIndex = 5
    End Select
End Sub

宜しくお願いします。

(aya)


 すんごい色を使ってますね(^_^A;
 複数セルの消去や、貼り付けに対応させました。

 ただし、複数セルの場合には範囲外でもマクロが働きます。
 ひとつのセルのみの場合は該当する(C6:AG155)以外では動きません。

 Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Variant
If Target.Column < 3 Then Exit Sub   'C列より左は処理中止
If Target.Column > 33 Then Exit Sub  'AG列より右は処理中止
If Target.Row < 6 Then Exit Sub      '6行目より上は処理中止
If Target.Row > 155 Then Exit Sub    '155行目より下は処理中止
If Target.Count = 1 Then
    Select Case Target.Value
        Case ""
            Target.Interior.ColorIndex = xlNone
        Case "○"
            Target.Interior.ColorIndex = xlNone
        Case "T"
            Target.Interior.ColorIndex = xlNone
        Case "U"
            Target.Interior.ColorIndex = 4
        Case "V"
            Target.Interior.ColorIndex = 18
        Case "有"
            Target.Interior.ColorIndex = 3
        Case "欠"
            Target.Interior.ColorIndex = 3
        Case "臨○"
            Target.Interior.ColorIndex = 5
        Case "臨T"
            Target.Interior.ColorIndex = 5
        Case "臨U"
            Target.Interior.ColorIndex = 5
        Case "臨V"
            Target.Interior.ColorIndex = 5
    End Select
Else
    For Each c In Selection
        Select Case c.Value
            Case ""
                c.Interior.ColorIndex = xlNone
            Case "○"
                c.Interior.ColorIndex = xlNone
            Case "T"
                c.Interior.ColorIndex = xlNone
            Case "U"
                c.Interior.ColorIndex = 4
            Case "V"
                c.Interior.ColorIndex = 18
            Case "有"
                c.Interior.ColorIndex = 3
            Case "欠"
                c.Interior.ColorIndex = 3
            Case "臨○"
                c.Interior.ColorIndex = 5
            Case "臨T"
                c.Interior.ColorIndex = 5
            Case "臨U"
                c.Interior.ColorIndex = 5
            Case "臨V"
                c.Interior.ColorIndex = 5
        End Select
    Next c
End If
End Sub

 (川野鮎太郎)

コードを入れてチョ〜ビックリです!(∂▼∂)!

パーっときれいにセルの色が消えました。非常にすばらしいです。
何度も何度もありがとうございました。

ありがとうございます。川野様のテクニックに感謝です。

(aya)


 正直なところσ(^_^;)のコードはテクニック云々ではなく、ベタベタな方法なので
 あまり参考にしないでください。
 ここのスペシャリストの方から見たら、 (o゚c_,゚o)プ♪って感じだと思います(^_^A;

 ただ、初心者にでもわかり易いコードを心掛けています。m(._.)m ペコッ
 といえば格好良いが、本当は難しいことわかんないんです・・・(T▽T)アハハ!
 (川野鮎太郎)

初心者の私でもわかり易かったです。ここ数日でexcelでの作業がかなり楽になりました。

きっとまた疑問が出てきて聞くこともあるかと思います。恐れながらその時は宜しくお願いします。

(aya)


またまた疑問が出てきてしまいました。

上記のように勤怠管理表としてマクロや多数の計算式も入力されています。それを保護するために「シートの保護」を実行したのですが、マクロの機能が働くなりました。

マクロも使えて、シートの保護ができるようにはできますか?

何度も質問していますが、宜しくお願いします。

(aya)


 う〜ん(/-_-\)
 コードの初めに
 ActiveSheet.Unprotect 入れて
 最後に
 ActiveSheet.Protect  入れれば、マクロは実行できるでしょうけど。
 数式も変更できるんじゃないかな・・・。

 数式の入っているセルだけ保護したらどうなりますか。

 っと、ここまで書いて気づいたけど、チェンジイベントだから、保護してたらコードを入れてもダメですね(^_^A;
 (川野鮎太郎)

いつもいつもお世話になります。

一応やってみました。

数式の入っているセルだけ保護して(C6:AG155は非保護)、最初と最後に↑のコードを入れてみたんですが、C6:AG155内に入力するとやはり「シート保護の解除」が出てきてパスワードの入力を要求されます。

チェンジイベントでは無理なことなんですね。無理ばかり言ってすいませんでした。
(aya)


 いや・・・・
 出来ないといったのは全部保護した場合で、C6:AG155は非保護の場合は、何もコードは追加しないで普通に動きませんか。
 それともC6:AG155は非保護の部分に数式が入ってますか。

 (川野鮎太郎)


 訂正です(^_^A;
 保護掛けていたらダメですね。以下のようにしてみてください。
If Target.Row > 155 Then Exit Sub    '155行目より下は処理中止
 ActiveSheet.Unprotect  'ここに保護解除入れる。
If Target.Count = 1 Then

 最後のEnd Subの上に 保護のコードを入れる。
 ActiveSheet.Protect  
 End sub
 (川野鮎太郎)

またまた初歩的な質問ですが(^。^;)以下のどのあたりに教えていただいたコードを入れればよいですか?

私なりにやってみたんですが、エラーばかりでして・・・。

 

 Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Variant
If Target.Column < 3 Then Exit Sub   'C列より左は処理中止
If Target.Column > 33 Then Exit Sub  'AG列より右は処理中止
If Target.Row < 6 Then Exit Sub      '6行目より上は処理中止
If Target.Row > 155 Then Exit Sub    '155行目より下は処理中止
ActiveSheet.Unprotect
If Target.Count = 1 Then
    Select Case Target.Value
        Case ""
            Target.Interior.ColorIndex = xlNone
        Case "○"
            Target.Interior.ColorIndex = xlNone
        Case "T"
            Target.Interior.ColorIndex = xlNone
        Case "U"
            Target.Interior.ColorIndex = 4
        Case "V"
            Target.Interior.ColorIndex = 18
        Case "有"
            Target.Interior.ColorIndex = 3
        Case "欠"
            Target.Interior.ColorIndex = 3
        Case "臨○"
            Target.Interior.ColorIndex = 5
        Case "臨T"
            Target.Interior.ColorIndex = 5
        Case "臨U"
            Target.Interior.ColorIndex = 5
        Case "臨V"
            Target.Interior.ColorIndex = 5
    End Select
Else
    For Each c In Selection
        Select Case c.Value
            Case ""
                c.Interior.ColorIndex = xlNone
            Case "○"
                c.Interior.ColorIndex = xlNone
            Case "T"
                c.Interior.ColorIndex = xlNone
            Case "U"
                c.Interior.ColorIndex = 4
            Case "V"
                c.Interior.ColorIndex = 18
            Case "有"
                c.Interior.ColorIndex = 3
            Case "欠"
                c.Interior.ColorIndex = 3
            Case "臨○"
                c.Interior.ColorIndex = 5
            Case "臨T"
                c.Interior.ColorIndex = 5
            Case "臨U"
                c.Interior.ColorIndex = 5
            Case "臨V"
                c.Interior.ColorIndex = 5
        End Select
    Next c
End If
ActiveSheet.Protect 
End Sub


 上の濃い部分ですけど。
 これでエラーが出るなら、エラーが出るときにどのような操作した時ですか。
 (川野鮎太郎)

 ↑のやり方で出来ましたヽ(^ー^)ノ
 ありがとうございます。
 今日も私の初歩的な質問に答えてくださり感謝いたします。
 (aya)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.