- ベストアンサー
【VBA】改行されているセル内のフォント色の判定
- VBAを使用して、セル内の改行されたテキストのフォント色を判定する方法を教えてください。
- 作業表のセル内に複数の作業項目があり、完了した項目は青色になっています。D列に各セルの青色の割合を表示したいです。
- 増え続ける行数に対応できるように、C列の色が変わった瞬間に判定したいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>何%の行が青になっているかをD列に表示させたい ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける Function Blue_Rate(ByVal Target As Excel.Range) As Variant Dim a As Variant, ax As Variant Dim n As Long Application.Volatile Set Target = Target.Cells(1) a = Split(Target.Text, vbLf) n = 1 For Each ax In a If Target.Characters(Start:=n, Length:=1).Font.ColorIndex <> xlAutomatic Then Blue_Rate = Blue_Rate + 1 End If n = n + Len(ax) + 1 Next Blue_Rate = Blue_Rate / (UBound(a) + 1) End Function ファイルメニューから終了してエクセルに戻る D2セルに =Blue_Rate(C2) と数式を記入する 適宜他のセルにコピーする。 使い方: C2セルの文字列の編集に入り,数式バーの中でてきとーな行に色を塗ってEnterして着色すると,登録した関数が直ちに色付き行の割合を計算します。データを編集してEnterしても再計算されます。 C2セルの文字列の編集を「行わず」,セルの書式設定で丸ごと文字色を青にした(あるいは自動に戻した)場合は,どのような手段を使っても直ちに結果に反映する方法はありません。F9キーを押すなどして,関数を再計算させます。
その他の回答 (1)
- mt2008
- ベストアンサー率52% (885/1701)
・Excelは表計算ソフトですので、数値を扱うのが得意ですが、色を扱うのが苦手です(数値を元に色を変化させるのは得意) ・一つのセルに1つのデータが基本です。 あなたがやろうとしている事は、無理ではないが面倒くさい内容です(ご承知の上での質問でしたら失礼)。 使い勝手や、今後のメンテナンスも考え、以下の様に簡略化する事をお勧めします。 ・セル内で改行するのではなく、項目毎にセルを分ける。 ・完了の入力を、色を付けるのではなく、項目名の隣のセルに1を入れる事にする。 ・完了したセルに色を付けるのは条件付き書式でやる。 これなら、VBAではなく、比較的簡単なセル式だけで瞬時に完成率が求められます。
補足
パーセンテージを出したいと言われた段階でそのように提案したんですが、既に表がかなりの長さになっているため分けるのに時間がかかるのと、見にくいと言われ却下されてしまいました・・・。
お礼
改良をして自己解決いたしました。 ありがとうございました。
補足
回答ありがとうございます。 正常に動かなかったので確認してみたところ、黒で指定しているものと自動になっているものが混ざっているためでした。 黒で指定していても自動にしていても大丈夫なようには出来るでしょうか? それと申し訳ございませんがひとつ条件を書き忘れてしまいました。 セルの中に【見出し1】【見出し2】と空白の行が入る場合があるのですが、この行はパーセンテージに反映しないように出来るでしょうか? よろしくお願いいたします。