[[20050115131721]] 『条件式書式を6つやりたいんですが・・・』(sirouto) >>BOT

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

 

『条件式書式を6つやりたいんですが・・・』(sirouto)

過去ログ見て見たんですが、VBA?というのを使うっていうのは分かりました。
しかしメモ帳?みたいなのに書き込む部分が分かりません。どうか素人にも
わかりやすいように教えていただけませんでしょうか?具体的に何がやりた
いかというと、”さる”だったら”赤”(セルの背景)、”くま”だったら”青”、
”とり”だったら”黄色”・・・とかいうのを6つ作りたいのです。
変な質問でしたら申し訳ありません。OSは2000で、バージョンも2000です。
どうぞよろしくお願い致します。


 設定したいシートのシートタブを右クリックして、コードの表示
 出てきたメモ帳みたいなVBA画面のシートモジュールに以下をコピペしてください。
 A列を対称にしていますので、A列に ねこ などと入力してみてください。
 
Private Sub Worksheet_Change(ByVal Target As Range)
'変数宣言
Dim colr As Integer
Dim c As Variant
    If Target.Count > 1 Then Exit Sub
    If Target.Column <> 1 Then Exit Sub
        For Each c In Target
            Select Case c.Value
                Case "さる"
                    colr = 3  'ここの色番号をお好きなように
                Case "くま"
                    colr = 5 '々
                Case "とり"
                    colr = 6  '々
                Case "いぬ"
                    colr = 4 '々
                Case "ねこ"
                    colr = 8 '々
                Case "あゆ"
                    colr = 7 '々
                Case Else
                    colr = xlNone
            End Select
            c.Interior.ColorIndex = colr
    Next c
End Sub
 
 色や、動物の名前はお好みに合わせてください。
 カラー番号は以下を参考にどうぞ。

 (川野鮎太郎)


『川野鮎太郎さん、ご親切に且つ丁寧に教えてくださって大変感謝いたします。本当に
ありがとうございます。これから挑戦してみたいと思います。ところで、こういう知識を
勉強するにはどういう本を買ったらいいでしょうか?質問ばかりですいません。もし
またこちらをご覧になって下さったら是非教えていただけませんでしょうか?』(sirouto)


 おはようございます。
 なかなか本を見ても判らないし、最近はネット上に沢山の情報が掲載されています。
 
[[20040915221444]]『マクロ開始のボタンの作成』(T) 
 
 こちらでINAさんが紹介されているページをご覧になってみては^^

 ※4回目の使いまわし(^_^A;

 でも、1冊ぐらいは持っていても良いかもしれませんね。
 どんな本が良いかはご自分で手にとって中を[壁]_・)チラッと眺めて
 判りやすそうなものを選べば良いかもしれません。

 下もサンプル付きで判りやすいページです。
http://www.asahi-net.or.jp/~ef2o-inue/menu/menu04.html

 (川野鮎太郎)

 『川野鮎太郎さん、こんにちは!またまたご丁寧にありがとうございます!
市販の本にも負けず劣らず素晴らしいサイトが色々とあるんですねぇ。教えて
下さってありがとうございます!これからエクセルを勉強していく予定です。
またこちらの掲示板に書き込みさせて頂くこともあるかと思います。その時は
またどうぞよろしくお願い致します!(すいません、もうひとつ質問が
あって、トピ作ろうと思います。よろしければ教えて下さい。)』
(sirouto)


 ふと考えたんですが、if関数を使って上記のことって出来ますでしょうか??
(sirouto)


 VBAのコードをSelect Case ではなく、IF関数でってことでしょうか?
 それは出来ます。

 それとも、IF関数を使って条件付書式でしょうか?
 こちらは、3色までしか出来ません。

 (川野鮎太郎)

突然すいません。上記の川野さんによるセルの背景を変えるVBAに関してですが、私はFontの色を変えたいのですが、どこの部分を変えたら出来ますか?また対象とする列は、If Target.Count > 1 Then Exit Sub
    If Target.Column <> 1 Then Exit Sub
の数字の部分を変えればよろしいのでしょうか?すいませんが教えて頂けないでしょうか?よろしくお願い致します。(はげちゃびん)


 こんにちは。
 >Fontの色を変えたいのですが・・・
 c.Interior.ColorIndex = colr を c.Font.ColorIndex = colr です。

 >また対象とする列は、・・・
 If Target.Column <> 1 Then Exit Sub
      ~~~~~~~~~~~~列が1列目以外中止ですから。
 C列を対象の場合は、
 If Target.Column <> 3 Then Exit Sub です。

 (川野鮎太郎)


川野さん、早速ありがとうございます。では、E列のみを対象にしたい場合は以下のようでよろしいのでしょうか?
   If Target.Count > 5 Then Exit Sub
     If Target.Column <> 5 Then Exit Sub
また、複数の列に同じ条件を反映させたい場合はどうやったら出来ますか?すいませんが、教えてください。


 >   If Target.Count > 5 Then Exit Sub
 ここは1のままです。 複数セル同時削除や複数コピペなどのときにエラーになるのを
 防いでいます。

 で、今気づいたんですが、上のコードは以前複数セル対応で作ったやつの使いまわしで
 不要なものが入ってました。(^_^A;
Private Sub Worksheet_Change(ByVal Target As Range)
'変数宣言
Dim colr As Integer
    If Target.Count > 1 Then Exit Sub
    If Target.Column <> 1 Then Exit Sub
        Select Case Target.Value
            Case "さる"
                colr = 3  'ここの色番号をお好きなように
            Case "くま"
                colr = 5 '々
            Case "とり"
                colr = 6  '々
            Case "いぬ"
                colr = 4 '々
            Case "ねこ"
                colr = 8 '々
            Case "あゆ"
                colr = 7 '々
            Case Else
                colr = xlNone
        End Select
        Target.Interior.ColorIndex = colr
End Sub

 >複数の列に同じ条件を反映させたい場合
 何列ぐらいありますか、またその列はどの列ですか。

     '5列、6列、8列以外は無視
    If Not (Target.Column = 5 Or _
            Target.Column = 6 Or _
            Target.Column = 8) Then Exit Sub
 などで対応できます。

 (川野鮎太郎)


見事に出来ました。ありがとうございます。


 以下雑文。

 〜応用する場合の考え方〜
 
「やや、セルの色を条件によって変更するマクロがあるぞ、これは便利だ」
「でもセルの色じゃなくてフォントの色を変更したいんだよなぁ」
「ちょっと改造すれば出来そうだけど、でも何処を変更すればいいのかよく解らないや…」
「そうだ、『マクロの記録』で『セルの色を変更する手順』と『フォントの色を変更する手順』を記録してみよう!」
「まずはセルの色を『黄色』にするマクロを記録して…記録終了…
 つぎにフォントの色は『赤』にして同じ事をやって…Alt+F11でVBEの画面を表示して結果を見てみよう」
 
Sub Macro1()
    With Selection.Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    End With
End Sub
Sub Macro2()
    Selection.Font.ColorIndex = 3
End Sub
 
結果、上記のようなマクロが出来上がった。
 
「Macro1がセルの色を変更するマクロでMacro2がフォントの色を変更するマクロか…
 どうやら共通してるのは『Selection』と『ColorIndex』と言う部分だな」
「Selectionは『Select』っていう意味からしてきっと『選択しているセル』って事だろう。
 ColorIndexは『Color』だし、きっと『色に関する設定』って事だな。」
「Macro2を見ると『Font』って書いてあるな…きっとこれが『フォントに対する設定をするぞ』ていう意味なんだろう。
 じゃあ『セルに対する設定』っていうのは…Macro1にある『Interior』なのかな?
 他のは意味がわからないけど…」
「取り合えずこれと川野鮎太郎さんのマクロと見比べてみよう…
 これはセルの色を変更するマクロだからきっと『Interior』や『ColorIndex』が出てくるに違いない」
「お、やっぱり『c.Interior.ColorIndex = colr』って書いてある。ここがきっと『セルの色』って意味なんだ!」
「さっき自分で記録したマクロを元に考えてみると…フォントの色を設定する時は確か『Font』だったよな…」
「じゃあ、
 『c.Interior.ColorIndex = colr』を
 『c.Font.ColorIndex = colr』と
 書き換えて、ためしに実行してみたらどうだろう?」
「…やった!うまい事フォントの色が変わるようになった!」
 
みたいな。
TargetやらColumnやらについて知るには、ヘルプを引いたりどこかのサイトなどで多少の勉強が必要かもだけど。
(ご近所PG)


 ご近所PGさん、おはようございます。m(._.)m ペコッ
 いつもながら判りやすい解説&フォローありがとうございます。
 (川野鮎太郎)

 おぉ〜 わかりやすい!!
 ご近所PGさんの書いていただいたレスは、考え方の流れやコツ等がわかりやすい〜
 私達、初心者にとってはこれはありがたいものです(^^)
 (キリキ)感謝々々

ちなみにもうひとつ聞かせてください。上記の色設定をしましたが、何も入力しないで空欄にするとエラーが出てしまいます。どうしたら解消できますか?たびたびすいません。教えてください。(はげちゃびん)

 空欄の場合でも
 >            Case Else
 >                colr = xlNone
で引っかかるはずです。
つまりは色を消すようになっています。
 
また、実際に動作させた所、当方環境では特に問題は無く動きます。
『エラー発生個所』及び『エラー内容』、可能であれば『再現手順』を明記してください。
(ご近所PG)Windows2000 Excel2000


はじめまして、表題のマクロのcaseの部分を以下のように変えて使ってみますと
該当セルに数字をハンド入力するとセルの色は変わるのですが、別セルにある数字を
コピー&ペーストで該当セルに貼り付けると色が変わりません。コピペでも色が変わる
ようにするにはどうすれば良いでしょうか?お手数ですが教えていただけないでしょう
か。よろしくお願いいたします。(aki)

            Case 2 To 3.4
                colr = 3
            Case 3.5 To 3.9
                colr = 5
            Case 4 To 5.9
                colr = 6
            Case 6 To 9.9
                colr = 4

 こんばんは。

 コピペでも一つのセルだったら変わるはずですけど。
 複数セルのコピペ、削除に対応させるならコードを少し修正しなければいけません。

 (川野鮎太郎)


早速の回答ありがとうございます。説明不足ですいません。回答のあるとおり複数セルのコピペの場合です。よろしくお願いいたします。(aki)


 こんな感じでしょうか。
Private Sub Worksheet_Change(ByVal Target As Range)
'変数宣言
Dim colr As Long
Dim c As Range
'定数宣言
Const LCol As Long = 5  '処理する左端列
Const RCol As Long = 10  '処理する右端列
      
    If Target.Column < LCol Or Target.Column > RCol Then Exit Sub
    For Each c In Target
        If Not (c.Column < LCol Or c.Column > RCol) Then
            Select Case c.Value
                Case 2 To 3.4
                    colr = 3
                Case 3.5 To 3.9
                    colr = 5
                Case 4 To 5.9
                    colr = 6
                Case 6 To 9.9
                    colr = 4
                Case Else
                    colr = xlNone
            End Select
            c.Interior.ColorIndex = colr
        End If
    Next c
End Sub

 (川野鮎太郎)


ありがとうございました。上手くいきました。(aki)


同じようなことで教えていただきたいのですが・・・(超sirouto)

はじめまして。私も条件付書式で分からなくて、いろいろ探していて、ここにたどり着きました。
ズブの素人で恥ずかしいのですが、教えていただけますでしょうか。
e列(5)に”さる”を入れたら青、”くま”・・はできたのですが、その時連動してd列(4)も同じ色で塗られるようにしたいのですが。
できたらヨロシクお願いします。


 新しくスレッド立てたほうがいいですよ。

 同じようなこと というのは 全く違う と同じことなので、どこがどうなった場合どうしたいのかを
 表をできるだけ正確に作って質問してみましょう。

http://www.excel.studio-kazu.jp/cgi-bin/kazuwiki2.cgi?mycmd=new

 (とおりすがっ太)

とおりすがっ太さま

ありがとうございます。
新たに質問をいたします。


コメント返信:

[ 一覧(最新更新順) ]


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