• ベストアンサー

エクセルのセルの背景色をレベルごと(12パターン)に色分けしたいのですが。

エクセルでラベルシールを作りたいと思っています。 Sheet1のA1に本のタイトルを入力すると、Sheet2のA1に同じくタイトルが表示され、Sheet1のB2に「Level 1」と入力すると、Sheet2のB2のセルに「L1」と表示され、かつB2のセルの背景色が黄色になる、という風に設定をしたいのです。Sheet1をリストとして使用し、Sheet2を実際のラベルとして使用します。レベルは0から11まであり、背景色を12パターン用意しないといけないので、3つまでしか設定できない「条件付き書式」の設定では対応できず、こちらにお尋ねしました。 だれでも使えるファイルを作成するため、マクロを登録してボタンクリックでラベル作成を行ないたいです。 VBEの画面に貼り付けることができるコードを教えていただけないでしょうか。 初めての投稿のため、説明が不十分かと思います。足りない部分は追って補足させて頂きますので、詳しい方、どうぞお知恵をお貸し下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.4

#2です。 改良してみました。お試しください。 '==============Sheet1のシートモジュールに記述=================== Private Sub Worksheet_Change(ByVal Target As Range)   Dim myWs As Worksheet   Dim myLevel, myColor   If Target.Count <> 1 Then Exit Sub   Set myWs = Sheets("Sheet2")   '色のIndex番号です。適当な数字を入れています。変更して下さい。   myColor = Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)   With myWs.Range(Target.Address)     Select Case Target.Column       Case 1, 3, 5 ' A,C,E列        .Value = Target.Value       Case 2, 4, 6 ' B,D,F列         myLevel = Trim(Replace(Target.Value, "Level", ""))         If myLevel = "" Then           .Value = ""           .Interior.ColorIndex = xlNone         ElseIf myLevel >= LBound(myColor) And _              myLevel <= UBound(myColor) Then           .Value = "L" & myLevel           .Interior.ColorIndex = myColor(myLevel)         Else           .Value = "Error"           .Interior.ColorIndex = xlNone         End If     End Select   End With   Set myWs = Nothing End Sub

k-uka
質問者

お礼

早速ありがとうございます。 やってみました。理想どおり、完璧なものにしていただいて、心より感謝です。ka_na_de様、本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.3

#2です。 色の数を12パターン以上に増やしても大丈夫なように変更しました。 ご参考までに。 '==============Sheet1のシートモジュールに記述=================== Private Sub Worksheet_Change(ByVal Target As Range)   Dim myWs As Worksheet   Dim myLevel, myColor      If Target.Count <> 1 Then Exit Sub      Set myWs = Sheets("Sheet2")      '色のIndex番号です。適当な数字を入れています。変更して下さい。   myColor = Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)      With myWs.Range(Target.Address)     If Target.Column = 1 Then ' A列       .Value = Target.Value     ElseIf Target.Column = 2 Then ' B列       myLevel = Trim(Replace(Target.Value, "Level", ""))       If myLevel = "" Then         .Value = ""         .Interior.ColorIndex = xlNone       ElseIf myLevel >= LBound(myColor) And _           myLevel <= UBound(myColor) Then         .Value = "L" & myLevel         .Interior.ColorIndex = myColor(myLevel)       Else         .Value = "Error"         .Interior.ColorIndex = xlNone       End If     End If   End With      Set myWs = Nothing End Sub

k-uka
質問者

補足

ご回答ありがとうございます。ご指摘通り、入力直後にセルの色を変えたかったので、助かりました。ここで申し訳ないのですが、私の説明不足があり、もしまたお助けいただけましたらお願いします。 A列B列で行ったことと同じことを、C列D列、E列F列、でも行いたいのですか、可能でしょうか?ラベルシートがA4サイズで、F列まで使うということを記載漏れしていました。 理想のラベル作成がうまくいきそうで、是非お力をお貸し頂ければ幸いです。 よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.2

一例です。 質問の前半では、入力後ただちに背景色を変化させたいようですが、 後半では、ボタンクリックで実行となっています。 最終的にどうしたいのか分かりませんが、とりあえず 入力後ただちに実行する場合の例です。 '==============Sheet1のシートモジュールに記述=================== Private Sub Worksheet_Change(ByVal Target As Range)   Dim myWs As Worksheet   Dim myLevel, myColor      If Target.Count <> 1 Then Exit Sub      Set myWs = Sheets("Sheet2")   myColor = Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)      With myWs.Range(Target.Address)     If Target.Column = 1 Then       .Value = Target.Value     ElseIf Target.Column = 2 Then       myLevel = Trim(Replace(Target.Value, "Level", ""))       If myLevel = "" Then         .Value = ""         .Interior.ColorIndex = xlNone       ElseIf myLevel >= 0 And myLevel <= 11 Then         .Value = "L" & myLevel         .Interior.ColorIndex = myColor(myLevel)       Else         .Value = "Error"         .Interior.ColorIndex = xlNone       End If     End If   End With      Set myWs = Nothing End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

ヒントだけです。 >Sheet1のA1に本のタイトルを入力すると、 シートのモジュールに、Changeのイベントで実行させる。 Sheet1のシート名タブを右クリック、コードの表示 GeneralをWorksheetに変える、右側を Changeに変更すれば Private Sub Worksheet_Change(ByVal Target As Range) End Sub が作成されます。 >Sheet2のA1に同じくタイトルが表示され Sheets("Sheet2").Range(Target.Address).Value = Target.Value >B2のセルの背景色が黄色になる 仮に B2に数値を入れるものとして、セルの色を変える場合 Sheets("Sheet2").Range(Target.Address).Interior.ColorIndex = Target.Value 参考です。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column < 3 Then Sheets("Sheet2").Range(Target.Address).Value = Target.Value End If If Target.Column = 2 Then Sheets("Sheet2").Range(Target.Address).Interior.ColorIndex = Target.Value End If End Sub

k-uka
質問者

お礼

早速のご回答誠にありがとうございます。 トライしてみます。また分からないことがありましたらお尋ねさせてください。取り急ぎお礼まで。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel セルからセルへの反映

    シート1のA1に1と入力すればシート2のB1に車と表示。 同じく2と入力→電車と表示。 3と入力→飛行機 といった表示をさせたいのですがやり方がわかりません。 どのシートのセルにどのような式や設定をすればよろしいでしょうか。 よろしくお願いいたします。

  • セルに背景を設定したいのですが、やり方が解りませんので、解る方がいまし

    セルに背景を設定したいのですが、やり方が解りませんので、解る方がいましたら教えてください。 具体的には、ドリームウェーバーCS5を使用しています。テーブルを作成し、そのテーブルをいくつかのセルに区切り、そのセルに、予めそのセルと同じ大きさの背景画像を用意しておき、その画像を、指定したセルの背景に使用したいのです。 セルに背景画像を指定し表示させ、その背景画像が設定されたセルには改めて文字を入力したいのです。 因みに、「sozai」フォルダを作成し、そのフォルダ内の「photo1.jpg」を背景画像に指定したいのです。 セルに画像として貼り付けるのではなく、背景としてセルに表示させたいのです。当方、とても困っております。説明文が上手く説明が出来なくてすみません。どなたか、解る方がいましたら教えてください。よろしくお願い致します。

    • ベストアンサー
    • HTML
  • エクセルでのセルの参照

    sheet1にデータが入力されています。 そしてsheet2ではそのsheet1に入っているデータを 抽出するsheetとして使用しています。 そこで、sheet2にある一つのセルに3と入力したら sheet1で使用しているA3、B3、C3、D3・・・ のセルのデータを、 4と入力したら A4、B4、C4、D4・・・ のセルのデータをsheet2のそれぞれのセルに引っぱってこれるように 関数を書きたいと考えています。 INDIRECTが機能的に近いのかなと考え、式を試してみたのですが なかなかうまくいきません。 また、4と入力したときにA5、B5、C5、D5を参照するというように 数値をいじったりできるであればそれも教えていただきたいです。 よろしくお願いいたします。

  • エクセル セルの参照

    エクセルのセルの参照でうまくいかないので教えてください 今sheet1のA1に「10:00」、B1に「12:00」と入力されています シート2の任意のセルに「10:00~12:00」というふうに表示したく =Sheet1!A1&"~"&=Sheet1!B1  と入力したのですが、 0.4166666666666667~0.5 というふうに返ってきます 「10:00~12:00」というふうに表示する方法はありませんか? あったら教えてください

  • エクセルの背景について

    エクセルのシートの背景が、真っ白です。別のシートは、セルがちゃんと表示されているのですが、そのシートは、結合はされてない様です。(真っ白ですが、カーソルを持っていくとそれぞれ黒枠でセルがでます。)どうやって設定を解除するのか教えてください。

  • Excelのセルの入力と印刷の設定

    仕事で、Excelのシートに住所を入力して、ラベル用紙(シール台紙)に印刷して、郵便物の封筒に貼り付けて使用しているのですが、前任者から引き継いだデータなので設定の詳細が色々不明でして。 住所はひとつのセルに入っている状況。郵便番号、住所、宛名と見た目には改行したい、のですが、現状一行に入っています。 郵便番号のあとスペースをたくさん入れて住所入力してまたスペースをたくさん入れて宛名、という入力になっていて、折り返しで表示されているので印刷した時には改行されて印字されるのですが、住所の変更などを行う際、何文字入れたら改行されるかプレビューしながら修正している状態ですごく効率が悪いです。 行を分けて入力するのがラクなのかと思いますが、印刷用紙のラベル(A4ヨコ用紙でタテ4×ヨコ4で16枚のシールラベル)に合わせてあると思うのではみ出しても困るし、という状況です。 私自身も初心者なので、何か簡単に作業を行う方法や設定はありますか?

  • Excelのセル表示形式について

    Sheet1のA1セルに「教えて!goo」と入力。 Sheet2のA1セルに「=Sheet1!A1」と入力。 本来なら、ここでSheet2のA1セルに「教えて!goo」と表示されるはずなのですが、なぜか「=Sheet1!A1」という文字列が表示されてしまいます。 どのように設定すれば、参照元のセル内容を正しく表示することができるのでしょうか?ご教示よろしくお願いいたします。

  • エクセル 未入力セルがあると保存できない設定

    エクセルVBAで、入力必須項目を設定し、未入力セルがある場合は保存ができないようにしたいのですが教えていただけませんか。 ブックには複数シートが存在し、入力必須項目を設定したいのはsheet1のみ。 sheet1のA1,A5, A9, B1, B5, B9の6つのセルはすべて必須入力。 未入力がある場合はファイルを閉じる時に保存が出来ないようにする。 出来ればどのセルが未入力なのかエラーメッセージが出るとベスト。 6項目すべて入力できていれば通常通りファイル保存して閉じることができる。 このブック作成者がブック作成、変更ができるようにしたい(ファイルを作成、変更する時はブランクなのでエラーメッセージが出てファイル保存ができないため)。

  • エクセル Sheet1 セルで入力したものをSheet2のセルへ

    エクセルのSheet1のセル(例えばB1)に入力した文字を、 Sheet2のセルの任意のセル(例えばA5)に自動で表示させるには どうすればいいのでしょうか?  Sheet2のA5のセルの中で、=Sheet1!B1 と入れても「0」に なるだけで・・・エクセルの何の機能を使えばいいのか全然分かりません。よろしくお願い致します。

  • エクセル:シートを分けての集計・セルの背景色

    エクセルについて、質問させてください。 添付ファイルのような3つのシートを作成したいと思っています。  ※1:テスト結果入力用シート(Sheet1)       ・受験者名、受験科目IDは、ランダムに増加。追記入力していく  ※2:最高点表示用シート(Sheet2)       ・テストを受けた人が、いずれかの科目で欠席したことがあれば、        自動的に名前のセルの背景に色を付ける       ・同点の人がいる場合は、同点の最初の人のみを自動的に表示       ・科目・受験者は、※1の表に追記するにつれ、自動的にどんどん        増えていく"  ※3:個人平均点表示用シート       ・テストを受けた人が、いずれかの科目で欠席したことがあれば、        自動的に点数のセルの背景に色を付ける       ・受験者は、※1の表に追記するにつれ、自動的にどんどん増えていく  利用ソフトは、excel2010ですが、できれば、excel2003でも可能なようにできると ありがたい所です。  必要であれば、マクロを使ってでも、とも思うのですが、できるだけセルの数式等 でできれば、と思っています。 ご教示の程、どうぞ、よろしくお願いします。

このQ&Aのポイント
  • SC-PX1VLは、EPSON社製品でDVDディスクの印刷が可能ですが、Macを使用している場合には専用のソフトをインストールする必要があります。
  • パソコン側のディスクの選択画面が表示されず、プリントされない場合は、インストールした専用ソフトからプリンターを選択して印刷する必要があります。
  • SC-PX1VLを使用してDVDディスクを印刷するためには、EPSONの公式ウェブサイトから最新版のソフトウェアをダウンロードし、インストールする必要があります。
回答を見る

専門家に質問してみよう