[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件付き書式は3つまで?』(aya)
質問します。
条件に付き書式は3つまでしかできませんか?
もし無理ならば、4つ以上の条件を付けたい場合は他に方法はありますか?
宜しくお願いします。
どのような条件でしょうか。 3つまでは、条件ではなく書式が3つまでです。 条件を数式で判断すれば、減るかもしれません。 (川野鮎太郎)
「U」のときは「緑」。「V」のときは「紫」。
「臨」のときは「青」。「有」「欠」のときは「赤」。
と、したいのですが。
宜しくお願いします。
こちらを参考に頑張ってみてください。
それでも判らない場合は再度、どこが判らないか質問してください^^ (川野鮎太郎)
参考にしてがんばってみます。
(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
試してください。
(ケン)
教えていただいたことをいろいろ試してみたいと思います。
ありがとうございます。
(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)
また疑問点が出てきてしまったので、お願いします。
上記は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)アハハ! (川野鮎太郎)
きっとまた疑問が出てきて聞くこともあるかと思います。恐れながらその時は宜しくお願いします。
(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.