エクセルのマクロについて
エクセルのマクロについて
エクセル2007を使用しています。もしよかったら教えて頂きたいと思っております。
現在利用しているメインシート(Sheet16で認識)のD5:I500の範囲内で1~31範囲の数字がランダムに入力されています。
この数字群の入ったセルをルール化しているセル背景色塗りを自動で処理したいためマクロを作成しております。
その仕様として、10個のシート(シート名:Aセット配色~Jセット配色)を作成して、各シートのB3:H7範囲に1~31までの数字が入っており、それぞれ数字に背景配色しています。Sheet16内と数字と条件によって該当する10個のシート内(シート名:Aセット配色~Jセット配色)の中から1つのシートとが一致したらそのセット配色シートのセルそのものの書式も運んでくれるルール設計になっています。
(※Sheet16の上記記載している範囲に直接入力及びコピーをして数字が一致したら、色が変わる仕組みになっています。)
更に、Sheet16内のJ3セルにA~J迄の半角英字を入力規制セットしており、例えばそのセルにCを入力すればCセット配色(シート名)、A入力であればAセット配色(シート名)を見に行き、該当処理をして行くという仕様になっております。
そのマクロ(※げNSheet16内に作成しています)が下記なのですが、拝見頂いて仕様がすぐお分かりになると思いますが、、
Private Sub Worksheet_Change(ByVal Target As Range)
Dim v As Variant, c As Range, s As Range, myStr As String
Dim rng As Range
Set rng = Intersect(Target, Range("D5:I500"))
If rng Is Nothing Then Exit Sub
If Range("J3").Value = "" Then
MsgBox "セット配色が未設定です。", vbCritical, "セットエラー "
Exit Sub
End If
myStr = Range("J3").Value & "セット配色"
Application.ScreenUpdating = False
For Each c In rng.Cells
For Each s In Worksheets(myStr).Range("B3:H7")
v = c.Value
If Not IsNumeric(v) Or v < 1 Or v > 31 Then Exit For
c.Interior.ColorIndex = xlColorIndexNone
c.Font.ColorIndex = xlColorIndexAutomatic
If s.Value = v Then
c.Interior.ColorIndex = s.Interior.ColorIndex
c.Font.ColorIndex = s.Font.ColorIndex
Exit For
End If
Next s
Next c
Application.ScreenUpdating = True
Set rng = Nothing
End Sub
今回の質問内容は、このマクロを少し仕様変更して、
C4:C500範囲でデータ書換えがあった場合にその瞬間、現行のJ3セルにその入力した英字と同じ値を表示させ次の処理に移行する方法にて上手くいかないかなと思っております。
上記のマクロを使用して追加組み込みをする前提で考えると、どういうコードを追加すれば実現出来ますでしょうか?
どうかご伝授頂けますと幸いです。
よろしくお願い申しあげます。
お礼
度々のアドバイスを有難うございました ANo.1 でご指摘頂いたとうり >> どこかのサイトからコピーして貼り付けたという事なので、何か制御コードのようなものが入っているのでしょう。 Copyしたセルが全部文字列になってるのですかね 初めての経験で戸惑いましたが おかげさまで成功しました 本当に有難うございました