Excelで普段何気なく使っているボタンですが、このボタンに書かれている文字の「色」から、どんな「役割」があるのかがなんとなく識別できるのではないでしょうか。
例えば、文字色の基本は「黒」です。普段の日常生活でも書類にボールペンやシャーペンで自分の名前を書いたりすることもあるかと思います。そのようにExcelのシートに最初に入力した時に表示される文字列の色は黒です。
またExcelのリボンに各種設定されたボタンに付随している文字列もほとんどが黒です。一方で文字色に設定される色で黒以外でもすぐに役割がわかるのが「青色」です。パソコンで使われる文字色の「青」で多くの人がイメージするのが「リンク」ではないでしょうか。
青色、もしくは水色に近い青色の文字があったら、「何かのページに繋がっているのかな」と考える人が多いかと思います。何らかの注意書きや強調は「赤色」を使ったりします。他にも文字に設定できる色はたくさんありますが、それぞれの文字色にその人ごとのイメージがあるでしょう。
同様に、フォームのボタンでもシートに設置したボタンでも状況によってそのボタンの文字色が「グレー」になっていると、「あぁ、このボタンは今は使えないんだな」という風に識別している人が多いのではないでしょうか。
以下の前回の過去記事では次のように書いていました。
今回のコードではフォームコントロールを形として「無効」にすることはできますが、同時に文字色までは変えることはできません。ActiveXコントロールだとEnabled=Falseにすると文字色もグレーになって無効になったことがわかりやすいのですが、フォームコントロールだと自動では文字色は変更されません。
そのため、必要であればフォームコントロールの文字色を変更するコードが別途必要になります。
上記の過去記事ではシート上に設置するフォームコントロールを「無効」にする方法について書きました。確かに「無効」にはできるんですが、それを見る人がわかりやすいようにボタンの文字色を「グレー」もしくは「灰色」にする、という処理まではできていませんでした。
シート上に設置するボタンにおいてActiveXコントロールだと、コードを使って無効にすれば自動的にそのコントロールの文字色も灰色になります。一方フォームコントロールのボタンの場合だと仕様のためか自動的には文字色は灰色にはなりません。
そこで今回は、ExcelVBAを使ってシートに設置したフォームコントロールのボタンの文字色を変更する方法について整理していってみます。