ここから本文です

エクセル マクロについて質問

ade********さん

2009/2/1209:56:51

エクセル マクロについて質問

エクセル2003使用。条件付書式で入りきらない4つ以上の条件をマクロで設定しました。
いちいち実行作業をしなくても、常にデータが更新されるたびにマクロ実行したいのです。

H列に入力されるとマクロ実行できるようにするプログラムを教えてください。

ちなみに今のプログラムを記入しておきます。
おかしいところがあればアドバイスもお願いできませんか?

For i = 2 To 100

Select Case Cells(i, "h")
Case "A"
col = 7 ' ピンク
Case "B"
col = 33 ' 水色
Case "C"
col = 4 ' 黄緑
Case "D"
col = 6 ' 黄色
Case "E"
col = 45 ' オレンジ
Case "F"
col = 3 ' 赤


Case Else
col = xlNone ' 塗りつぶしなし
End Select

For j = 8 To 8
Cells(i, j).Interior.ColorIndex = col
Next j

Next i


End Sub

閲覧数:
435
回答数:
2

違反報告

ベストアンサーに選ばれた回答

んなっとさん

2009/2/1212:40:40

Intersectも使ってH列限定のシートイベントにしましょう。

シートモジュール[Sheet1(Sheet1)みたいなところダブルクリック]に

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRng As Range, r As Range
Dim col As Variant
Set myRng = Intersect(Target, Columns("H"))
'値が変化したセルとH列の共通部分がなければ終了
If myRng Is Nothing Then Exit Sub
For Each r In myRng
With r
Select Case .Value
Case "A"
col = 7 ' ピンク
Case "B"
col = 33 ' 水色
Case "C"
col = 4 ' 黄緑
Case "D"
col = 6 ' 黄色
Case "E"
col = 45 ' オレンジ
Case "F"
col = 3 ' 赤
Case Else
col = xlNone ' 塗りつぶしなし
End Select
.Interior.ColorIndex = col
End With
Next
End Sub

質問した人からのコメント

2009/2/12 13:12:02

感謝 ありがとうございます。
そのままコピーして貼り付けただけで、万事うまくいきました!!

魔法みたいです。
原理を全く理解しないまま解決させてしまって、いいのかわからないのですが…。
私の頭では、たぶん完全な理解は不可能ですので、これで良しとします。
本当にありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

tky********さん

編集あり2009/2/1210:34:35

入力しているシートに、

Private Sub Worksheet_Change(ByVal Target As Range)

(adeamebutさんの作成したマクロ)

End Sub
で、どうでしょう?
重くなるかな・・・

最後の方のFor~Nextは意味ないような気が・・

j=8
Cells(i, j).Interior.ColorIndex = col

又は、
Cells(i, 8).Interior.ColorIndex = col

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる