
画像: スクリーンショット
Microsoft Excelでは、値を分類したり、注目を集めたりするために書式設定するのが一般的です。幸いなことに、条件付き書式ルールを使えば大抵はうまくいきますし、この機能は使い方も簡単です。しかし、時々、少し頭を悩ませる状況に遭遇することもあります。例えば、コンボボックスコントロールで選択された値に条件付き書式を設定できるでしょうか?答えは「はい」ですが、条件付き書式ではなく、VBAプロシージャを使用します。この記事では、コンボボックスで選択された値と、その選択に基づいて通常のセルの内容を書式設定する方法を説明します。
開示事項: TechRepublicは、このページで紹介されている一部の製品から手数料を受け取る場合があります。TechRepublicと著者は、この独立したレビューに対して報酬を受け取っていません。
まず、コンボボックスコントロールを埋め込みます。次に、VBAイベントプロシージャを使用して、選択された値に基づいてコントロールのフォント色を変更します。さらに、条件付き書式ルールを使用して、コンボボックスで選択された値に基づいてセルの書式を設定します。
私は(デスクトップ版の)Office 365を使用していますが、以前のバージョンもご利用いただけます。ご自身のシートで作業することも、デモ用の.xlsmファイルをダウンロードすることもできます。この記事の内容はブラウザ版には適用されません。
参照:すべてのユーザーが習得すべき 52 の Excel ヒント(TechRepublic)
Excelにドロップダウンを埋め込む方法
データ検証コントロールを使用してリストを提供することもできますが、この場合は、セルにリンクできる埋め込みコンボボックスコントロールの方が優れています。このセクションでは、コンボボックスコントロールを埋め込み、短い静的リストを作成します。ここで言う静的とは、リストが動的ではないことを意味します。リスト項目が変更された場合は、手動で更新する必要があります。
まず、スタンダード、シルバー、ゴールド、プラチナ、ダイヤモンドのリストを目立たない場所に追加します。ここでは、すべてが同じシート上に表示され、見やすいように、J3:J7を使用します。
次に、次のようにセル B2 の近くにコンボ ボックス コントロールを追加します。
- 「開発」タブをクリックします。「コントロール」グループで「挿入」ドロップダウンをクリックし、「ActiveXコントロール」セクションから「コンボボックス」を選択します。
- コントロールを B2 の近くに埋め込み、必要に応じてサイズを変更します (後で B2 にリンクし、リンクされたセルとコントロールが連携して動作することを確認します)。
- コントロールを選択した状態で、[コントロール] グループの [プロパティ] をクリックします。
- 表示されるプロパティ シートで、LinkedCell 設定としてB2を入力し、 ListFillRange 設定としてJ3:J7 を入力します (図 A )。
- プロパティ シートを閉じます。
- コントロールの名前を確認してください。デモファイルではComboBox1です。任意の名前を付けることもできます。いずれにしても、コントロールの名前を必ずメモしておいてください。後で必要になります。
- コントロールを使用できるようにするには、[コントロール] グループの [デザイン モード] をクリックします。
図A
コンボを使用するには、ドロップダウンをクリックして任意の項目を選択します。図Bでは、「Gold」を選択しています。そのため、コントロールをB2の近くに埋め込むことにしました。コンボで選択した項目が、リンクされたセルB2の内容を更新するのを確認できます。さあ、別の項目を選択して、それに応じてB2の内容が更新されるのを確認してください。
図B
コンボボックスの書式設定方法
コンボ ボックス自体の書式設定は行わない方がよいでしょうが、いくつか選択肢があります。例として、簡単な VBA プロシージャを使用してフォントの色を変更します。そのためには、必要に応じて [開発] タブの [コントロール] グループで [デザイン モード] をクリックします。次に、コントロールをダブルクリックして、コントロールの Change イベント プロシージャのスタブを含む、アクティブ シート (Sheet1) のモジュールに対して Visual Basic Editor (VBE) を開きます。リスト Aに示すコードを追加して、プロシージャを完了します(この Web ページからコードをコピーしないでください。VBE は、表示されない Web 文字を解釈できません。テキストをテキスト エディターにコピーしてから、それをモジュールにコピーすることができます。または、ダウンロード可能なモジュール ファイルでプロシージャを見つけることもできます)。リボン バージョンを使用している場合は、ブックに戻り、マクロ有効ブック (.xlsm) として保存します。
リストA
プライベートサブ ComboBox1_Change()
(選択した値に基づいてコントロールのフォント色を変更します。)
コンボボックスとして暗黙の cbo
cbo = ComboBox1 を設定します (コントロールに名前を付ける場合は、この定義を必ず更新してください)。
ケースcbo.Valueを選択
ケース「標準」
cbo.ForeColor = vbRed
ケース「シルバー」
cbo.ForeColor = vbCyan
ケース「ゴールド」
cbo.ForeColor = vbYellow
ケース「プラチナ」
cbo.ForeColor = vbMagenta
ケース「ダイヤモンド」
cbo.ForeColor = vbBlue
選択終了
終了サブ
ワークシートに戻り、ドロップダウンリストから項目を選択します。変更はすぐには反映されませんので、シート内の別の場所をクリックしてください。唯一の欠点は、ForeColorプロパティは選択した項目だけでなくリスト全体に影響することですが、これは問題にならないかもしれません。
同じように設定できるプロパティは他にもありますが、実際に必要なのはシート内のどこかの値の書式設定でしょう。コンボボックスはB2にリンクされているので、思ったよりも簡単です。
別のセルをフォーマットする方法
条件付き書式ルールは、別のセルの値に基づいてセルの書式を設定するためによく使用されます。この例では、条件値がセルではなくコンボボックス内にあるため、それほど明確ではありません。しかし、コンボボックスを参照する必要はありません。B2を参照すれば良いので、この問題はすぐに解決されます。そのため、データ検証コントロールではなくコンボボックスを使用しました。
この例ではデータ セットがないため、書式設定するセル/範囲として F2 を使用します。
- [ホーム] タブの [スタイル] グループで [条件付き書式] をクリックし、ドロップダウン リストから [新しいルール] を選択します。
- 上部のペインで、最後のオプション「数式を使用する…」を選択します。
- 下のペインに次の式を入力します:
=B2=”Standard” - 「書式」ボタンをクリックし、「フォント」タブ(必要に応じて)をクリックし、「色」ドロップダウンから赤を選択して「OK」をクリックします。図Cは式と書式設定を示しています。「OK」をクリックしてシートに戻ります。
図C
ここで、コンボから「標準」を選択すると、図Dに示すように、F2キーのテキストが赤くなります。さらに、コンボ内で選択されている項目も赤くなります。
図D
各色のルールを追加するまで、上記の手順を繰り返します。
- シルバーはシアン(明るい緑)です。=B2=”シルバー”
- 金は黄色です。=B2=”金”
- プラチナはマゼンタ(印刷はピンク)です。=B2=”プラチナ”
- ダイヤモンドは青です。=B2=”ダイヤモンド”
各色にルールを設定したら、コンボを更新するとコンボとF2キーのフォント色の両方が変更されます。この2つを併用する必要はありません。実際、コンボの書式設定が必要になることはまずないでしょうが、これでコンボの選択値を使ってデータを書式設定する方法がわかりました。