- 締切済み
Excelのセルに指定した色をつけたい
データセル縦20×横31の表が2つ、上下に並んでいます。 一方の表(A)のセルに3~20までの数字を入力すると、もう一方の表(B)の、場所が対応したセルに、Aの番号をカラーパレットの番号とした色をつけたいのです。 縦は氏名、横は日付で、グループ編成の色付スケジュール表を作るのが目的です。 自動更新、または、Aに数字を入力後F9による手動更新、いずれかの方法によるVBAを考えています。 VBA初心者のため、手がかりを教えていただきたいと思います。宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yokomaya
- ベストアンサー率40% (147/366)
あくまでも手がかりということで。宜しくお願いします。 まず目的はセルに色をつけるということですので、マクロの記録を開始して、B表の任意のセルにセルの書式設定→パターンで色付けします。これで記録されたマクロはセル選択の部分と、色付けの部分でこれは後に使います。 次に入力を契機に走らせるVBAはワークシートのChangeイベントを使います。具体的にはVBEを開いてプロジェクトエクスプローラの当該シートをWクリックするとシートのイベントの窓が開くので左上の小窓の(General)という所をWorksheetに切り替え、右上の小窓でChangeを選びます。これで表示される Sub Worksheet_Change が、このシートに入力される都度呼び出されます。Targetは入力されたセルです。 で、この中にまず Target.Rowと Target.ColumnがA表の中であるかどうかを判定するIF文を設けます。 範囲内なら先ほど記録したもののうちセル選択をTarget.Offset()を使い必要なだけ(A表からB表の位置の差)ずらせたセルを選び、色付けにはTarget.Valueを使うという形になるかと。
お礼
yokoyamaさん、 ご回答有難うございました。 実は、自分で難しく考えすぎていて、コロンブスの卵のような方法で解決できました。 (1)テーブル処理で、A表からB表に色をつけるマクロを作成する。 Cells(m, n).Offset(x, 0).Interior.ColorIndex = ・・・ を使いました。 (2)表に、フォームツールバーからコマンドボタンを作成する。 (3)コマンドボタンに、(1)のマクロを登録する。 後は、コマンドボタンをクリックすることで、無事にB表に色を付けることができました。 大変勉強になりました。 改めて御礼申し上げます。