[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルに色を付ける』(セイラ)
教えていただけたら幸いです
下記のようにマクロを組んでいますが
別ファイルからシートからコピペした時
マクロが動いてくれる様にするには
どのようにしたらよろしいのでしょうか
よろしくお願いいたします
Sub 色()
Dim R As Range
Set Target = Range("A:I")
If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub
For Each R In Intersect(Target, Range("I:I"))
Range(Cells(R.row, 1), Cells(R.row, 9)).Interior.ColorIndex = 0
Select Case R
Case "A1"
Range(Cells(R.row, 1), Cells(R.row, 9)).Interior.ColorIndex = 36
Case "A2"
Range(Cells(R.row, 1), Cells(R.row, 9)).Interior.ColorIndex = 36
Case "B1"
Range(Cells(R.row, 1), Cells(R.row, 9)).Interior.ColorIndex = 37
Case "B2"
Range(Cells(R.row, 1), Cells(R.row, 9)).Interior.ColorIndex = 37
End Select
Next
End Sub
< 使用 Excel:Excel2010、使用 OS:Windows8 >
(コピー云々を考えずに)普通にChangeイベント処理で対応したら
何かまずいことがありますか?
ところで、提示されたマクロは、
・常に(IfはいつもFalseで、Exit Subすることはありません)
・I列のすべてのセルに対して処理を行う
ものになっていますが、これは意図した動作ですか?
実際に使っているんですか?
(γ) 2016/01/30(土) 09:37
すでにγさんから指摘がありますが、【コピペした時のみ】という判定、粘り強く、こつこつとコードを重ねれば できないことはないと思いますが、通常のChangeイベントで処理するのがよろしいのでは? もしかしたらコピペ後、I列のセルを手入力で変更する場合もあるかもしれませんし、その場合に対処しないと シート上のI列の値とその行の色の状態が規定外の組み合わせになるかもしれませんので。
アップされたコードそのものは、もしかしたら、かって Changeイベントに書かれていたものを移植して 引数として渡されていた Target を無理やり(?)マクロ内で設定したのかもしれませんね。 なので、結果としては無条件実行になっています。
テーマとは離れますが、分岐条件やループが入り組んだコードですので、インデントを付けて記述するようにしましょう。 (というか、コードは常にインデントをつけて記述しましょう) また、モジュール先頭に Option Explicit を記述し、プロシジャ内で使う変数についてはすべて明示的に定義するようにしましょう。
以下、コード例です。 シートのシートタブを右クリックしてでてきたところ(シートモジュール)にいかを貼り付けて試してみてください。
★γさんからの重要な指摘、I列のすべてのセルを処理するようになっている構え、そのままでアップ。 そこを訂正しました。(11:45)
Private Sub Worksheet_Change(ByVal Target As Range) Dim R As Range Dim myArea As Range Dim mycix As Long
Set myArea = Intersect(Target, Columns("I"), UsedRange) If myArea Is Nothing Then Exit Sub
For Each R In myArea.Cells mycix = xlNone Select Case R.Value Case "A1", "A2" mycix = 36 Case "B1", "B2" mycix = 37 End Select
R.EntireRow.Range("A1:I1").Interior.ColorIndex = mycix
Next
End Sub
(β) 2016/01/30(土) 11:40
下記の件はその通りです
アップされたコードそのものは、もしかしたら、かって Changeイベントに書かれていたものを移植して
引数として渡されていた Target を無理やり(?)マクロ内で設定したのかもしれませんね。 なので、結果としては無条件実行になっています。
実際勉強不足で 落ちてるコード改良するのが正直精一杯でして
無駄なコード たぶん有るだろうなって思うところ
動けばいいで 先行してるのが事実です
お恥ずかしいところです
今後ともよろしくお願いいたします
(セイラ) 2016/01/31(日) 07:24
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.