No.4ベストアンサー
- 回答日時:
No.3です。
前回回答でCELL関数と条件付き書式を使用した「文字の横位置」によって、フォントの色を変える方法を回答しました。
しかし、ご質問者から
>でも数字だと配置に関わらず空白になってしまいます
>なにかいい方法はないでしょうか
とのコメントが示されました。
そもそも、CELL関数のinfo_type値"prefix"では、対象セルの "文字位置" に対応する文字列定数を返しますので、セルに文字以外(数値や数式)が入力されている場合空白が返ります。
ご質問者の当初のご質問は
>文字の配置によって文字の色を変えたい
というご説明だったのですが、数値の場合もあるということのようです。
だとすると、CELL関数での判別は困難です。代替案としては、No.2さんの回答のように、VBAを使用する方法も考えられます。
ここでは、VBAといっても「ユーザー定義関数」を使う方法を考えてみました。
まず、VBEを起動し、標準モジュールに以下のVBAを記述します。
Option Explicit
Function prefix_info(ByVal Target As Range) As String
Dim kekka As String
Dim hrizn As Variant
kekka = "^"
hrizn = Target.HorizontalAlignment
If hrizn = xlLeft Then kekka = "'"
If hrizn = xlRight Then kekka = """"
prefix_info = kekka
End Function
加えて、「横位置配置」によって、フォントの色を変えようとしているシートのシートモジュールに以下のVBAを記述します。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Calculate
End Sub
さらに、前回回答でお示しした、関数の結果によりフォントの色を変える「条件付き書式」を設定しでフォントの色を変更します。
添付画像を参照してください。
これで、数値が入力されていても、「横位置配置」(指定無しの場合を除く)に沿ったフォント色で表示されます(指定なしの場合は標準色での表示となります)。
No.3
- 回答日時:
>文字が中央なら黒、右揃えなら赤、左揃えなら青って感じです
ご質問者が例として示されたものを実現する方法として「条件付き書式」を活用した手段を考えてみました。
No.1さんがお示しになったCELL関数を使用します。
文字をを入力する範囲を指定してその範囲に対し、「次の数式を満たす場合に値を書式設定」に、
=CELL("prefix",a1)=""""という数式を記述し、フォント色を赤
=CELL("prefix",a1)="'"という数式を記述し、フォント色を青
=CELL("prefix",a1)="^"という数式を記述し、フォント色を黒
という条件を設定します。
これで、文字を左揃えにすると青、中央揃えにすると黒、右揃えにすると赤という条件付き書式が設定されます。
添付画像を参照してください。
この条件付き書式を設定した上で、セルに入力した文字を左揃え、中央揃え、右揃えと配置を変更してみて、フォントの色が自動的に変更されるかどうか確認してください。
No.2
- 回答日時:
こんばんは、
VBAマクロの場合
>文字の配置によって文字の色を変えたいのです
解釈によっては、難しくなります。
①すんなり解釈して、入力時にそのセルの書式設定で色を変える
②現在の書式設定で色を付ける
③書式設定を変えると文字の色が変わる
①は、Worksheet_Changeイベントに処理を書けばさほど難しくはないと
②も、普通にプロシージャを実行すれば良いはずです。
③は、困ります。書式変更時に実行されるイベントがありません。
すぐに思いつくのは、Worksheet_SelectionChangeを工夫するとかですが
果たして、、、です。
>あるマクロをちょっと手を加えて使える
Worksheet_Changeイベントに改造する事も出来ると思いますので
べたですが②のサンプルを書きます。(一例)
'参考
'xlGeneral 1 標準
'xlLeft -4131 左詰め
'xlCenter -4108 中央揃え
'xlRight -4152 右詰め
'xlFill 5 繰り返し
'xlJustify -4130 両端揃え
'xlDistributed -4117 均等割り付け
Sub aa()
Dim r As Range
Dim rc As Integer
If Selection.Count > 2000 Then
rc = MsgBox("選択範囲が広いので処理に時間がかかります。処理を行いますか?", vbYesNo + vbQuestion, "確認")
If rc = vbNo Then Exit Sub
End If
For Each r In Selection
With r
Select Case .HorizontalAlignment
Case xlLeft
.Font.Color = RGB(255, 0, 0)
Case xlRight
.Font.Color = RGB(0, 0, 255)
Case xlCenter
.Font.Color = RGB(0, 0, 0)
Case xlJustify
.Font.Color = RGB(0, 0, 0)
Case xlDistributed
.Font.Color = RGB(0, 0, 0)
Case Else
.Font.Color = RGB(0, 0, 0)
End Select
End With
DoEvents
Next r
End Sub
選択範囲が大きいとスタックの可能性もあるかと思います。
途中で止められるようにDoEventsを入れてあります。
Selectionを範囲指定したり、Changeイベントでは、ループをせず
With Targetなどとすれば良さそうです。
調べて手を加えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- HTML・CSS htmlです。 上のところには黒文字でピカチュウで、ピカチュウの文字には影をすべてにつけてください周 1 2023/01/02 12:48
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
- その他(Microsoft Office) Excelの条件付き書式についての質問です。 2 2022/09/08 01:25
- ビジネスマナー・ビジネス文書 こだわりすぎかも知れませんが。 人様のお名前を書いて行くときに、苗字が漢字二文字の人と一文字の方がい 2 2023/02/14 04:00
- 画像編集・動画編集・音楽編集 手書きで紙に書いた文字をロゴにしたいのですが、 セルフでできるアプリを教えてください。 切り抜いて、 1 2023/07/20 22:14
- その他(クラウドサービス・オンラインストレージ) Googleカレンダーの予定の色を変えたい、文字色を変えたい。 1 2022/10/18 21:43
- HTML・CSS リンクバナーのHTMLタグ。画像を変えたり、設置位置を変えるとバナー貼付け側はどう見える? 2 2023/02/01 12:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで文字を含む式に、カ...
-
エクセルで文字が白くなる
-
アクセスで#エラーを表示させ...
-
Excelで、空白を表示したい
-
エクセルで、時間 0:00を表示...
-
エクセル条件付書式で指定の時...
-
エクセル(2003) 「1900/1/0...
-
エクセル マイナスは黒文字で、...
-
excelの軸
-
小数点以下の数字だけ小さいフ...
-
TO_CHARでのゼロ非表示について
-
Excelで小数部が勝手に繰上げさ...
-
Access ¥マークを表示しない
-
Excelのテーブルでセルの書式設...
-
エクセル/グラフのデータテー...
-
Googleスプレッドシートで特定...
-
エクセルの書式設定に時間(0:0...
-
0を入力したら文字色が消えてし...
-
エクセルの表示が ‐(ハイフン...
-
Excelのセルでの配置です。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで文字が白くなる
-
エクセル条件付書式で指定の時...
-
エクセルで文字を含む式に、カ...
-
Excelで、空白を表示したい
-
エクセルで、時間 0:00を表示...
-
アクセスで#エラーを表示させ...
-
エクセル(2003) 「1900/1/0...
-
excelの軸
-
エクセルの書式設定が解除でき...
-
Excelのテーブルでセルの書式設...
-
小数点以下の数字だけ小さいフ...
-
today関数で日付を全角文字で表...
-
エクセル マイナスは黒文字で、...
-
エクセルで合計
-
Access ¥マークを表示しない
-
エクセルでゼロ「0」が「-」に表示
-
Excelで小数部が勝手に繰上げさ...
-
エクセルで上付き,下付き文字...
-
エクセルで「0(ゼロ)」を印...
-
強調の・
おすすめ情報
cell関数よさそうですね!
でも数字だと配置に関わらず空白になってしまいます
なにかいい方法はないでしょうか