dポイントプレゼントキャンペーン実施中!

エクセルで(2010)予約表を作っています。

データ用のシート(Sheet1)に名前を入力し、別シート(Sheet2)に「データの入力規則」を使ってプルダウンリストで時間別(1時間ごと)の予約表を作りました
Sheet1のデータに名前ごとに色分けしてセルを塗りつぶしています。
今の段階ではSheet2で同じく色分けをしようとすると、条件付き書式で書式(塗りつぶし)をいちいち入れなおさなければできません。
始めは、人数も少なかったので既定の色で間に合ったのですが、人数が増えると色も微妙に変えなければならず、その色をいちいち探して入れなおすのが面倒になってきました。
何か手数を減らして、効率的に塗りつぶしを反映する方法はありませんか?
マクロを使う方法しかないのでしょうか?
マクロもよくわかっていないので、いつも教えて頂いたマクロをコピペしているようなレベルです。

なのとぞご教示いただけますようよろしくお願い致します。

「エクセル 別シートの書式(塗りつぶし)を」の質問画像

質問者からの補足コメント

  • うれしい

    ありがとうございます!!できました!!
    とても厚かましいのですが…もう一つ質問させてください。
    リストのシートの一番初めの一つ目の名前は塗りつぶし、フォントの色、太字まで反映されているのですが、
    2行目以降の名前は塗りつぶしのみが反映されています。
    フォントの色と、太字・細字も反映できる方法はありますか?
    本当に厚かましくて申し訳ございません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/11/05 00:09
  • へこむわー

    何度もすみません。先程の太字になったのはもともと条件付き書式で設定していました。
    なので、自動的に白字で太字なんですね。早まってしまいました。
    では、フォントの色や、太字などの設定のコードがあれば教えて頂きたいのですが…
    すみません。宜しくお願い致します。
    ※へこむわーのアイコンは「すみません」の意味で押させて頂きました。

      補足日時:2017/11/05 00:18

A 回答 (2件)

>フォントの色や、太字などの設定のコードがあれば・・・



前回のSheet2の表はフォント色と塗りつぶしの色を両方をA列だけにしてみてはどうでしょうか?

そして、条件付き書式が設定してある場合は条件付き書式の方が優先されますので、
条件付き書式は解除しておいてください。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow As Long, lastCol As Long
Dim c As Range, myRng As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
lastRow = Cells(Rows.Count, "C").End(xlUp).Row
lastCol = Cells(3, Columns.Count).End(xlToLeft).Column
Set myRng = Range(Cells(4, "G"), Cells(lastRow, lastCol))
If Intersect(Target, myRng) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Value <> "" Then
Set c = wS.Range("A:A").Find(what:=.Value, LookIn:=xlValues, lookat:=xlWhole)
.Interior.Color = c.Interior.Color
.Font.Color = c.Font.Color
If c.Font.Bold = True Then '//★//
.Font.Bold = True
End If '//★//
Else
.Interior.ColorIndex = xlNone
.Font.ColorIndex = xlAutomatic
.Font.Bold = False
End If
End With
End Sub

※ フォントスタイルは「太字」か「標準」のどちらかだという前提です。
たとえば「斜体」などある場合は、一つ一つ指定するより
いっそのことSheet2のA列該当セルをそのままコピー&ペーストする方が手っ取り早いかもしれません。
ただし、この場合無限ループに陥りますので気を付ける必要があります。

※ 「★」の行だけに手を加えています。m(_ _)m
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございます!!
私の理想の予約表になりました"(-""-)"
嬉しすぎて「よっしゃ~!」( `ー´)ノ と大きな声で言ってしまいました。

分かりやすい説明で、本当にコピペだけでできてしまって…申し訳ないくらいです。
本当にありがとうございました。

お礼日時:2017/11/05 08:33

こんばんは!



画像は「Sheet1」で3行目が項目行(時間帯?)が入っていて、
G列から4行目以降に「氏名」が入る!という前提です。

↓の画像のようにSheet2に氏名と色の対応表を作成しておけばVBAで簡単にできると思います。
以下のコードをSheet1のシートモジュールにしてください。

Private Sub Worksheet_Change(ByVal Target As Range) '//この行から//
Dim lastRow As Long, lastCol As Long
Dim c As Range, myRng As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
lastRow = Cells(Rows.Count, "C").End(xlUp).Row
lastCol = Cells(3, Columns.Count).End(xlToLeft).Column
Set myRng = Range(Cells(4, "G"), Cells(lastRow, lastCol))
If Intersect(Target, myRng) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Value <> "" Then
Set c = wS.Range("A:A").Find(what:=.Value, LookIn:=xlValues, lookat:=xlWhole)
.Interior.Color = c.Offset(, 1).Interior.Color
Else
.Interior.ColorIndex = xlNone
End If
End With
End Sub '//この行まで//

※ 行方向はG4セル以降C列データがある行まで、
列方向はG列以降3行目のデータがある列までを色付けの範囲としています。m(_ _)m
「エクセル 別シートの書式(塗りつぶし)を」の回答画像1
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!