
No.5ベストアンサー
- 回答日時:
> フォントサイズを変更する「列」が複数列の場合はどうしたらよいのでしょうか?
> B~D列の3列のフォントを変更したいと考えています。
B列に計算式を設定し、「順位」を表示しているものとし、その順位により、
フォントサイズを自動的に変更するコードです。
これで、如何でしょうか。
VBAコードの設定方法は、前と同じです。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rng As Range
Const JuniHani = "B2:B100" ' 順位表示範囲を指定
Application.ScreenUpdating = False
Range(JuniHani).Resize(, 3).Font.Size = 11 ' 一般Fontサイズ
For Each Rng In Range(JuniHani)
If Not IsEmpty(Rng) And IsNumeric(Rng.Value) Then
If Rng.Value <= 5 Then
Rng.Resize(, 3).Font.Size = 24 ' Top5 Fontサイズ
ElseIf Rng.Value <= 10 Then
Rng.Resize(, 3).Font.Size = 18 'Top6~10 Fontサイズ
End If
End If
Next Rng
Application.ScreenUpdating = True
End Sub
No.4
- 回答日時:
No.3ですが、ランキングの基になる数値データに文字列、空白など数値以外を入力した
ときでも、実行エラーに対処し、また、ランクインしない部分のフォントを元へ戻す
ためのコードを修正しました。
10位が同じ数値で複数ある場合の処理をどのようにするかで変わって来ますが、
現コードでは、行が上のもの1件としています。 必要により、変更してください。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rng As Range
Const CngFSizeCol = "A" ' フォントサイズを変更する「列」を文字列で指定
Const ChkValHani = "B2:B1000" ' 順位を判定する「数値データ範囲」を文字列で指定
Dim N As Integer
Application.ScreenUpdating = False
Range(CngFSizeCol & ":" & CngFSizeCol).Font.Size = 11 ' 一般Fontサイズ
For Each Rng In Range(ChkValHani)
If Not IsEmpty(Rng) And IsNumeric(Rng.Value) Then
If Application.WorksheetFunction. _
Rank(Rng.Value, Range(ChkValHani)) <= 5 Then
N = N + 1
Range(CngFSizeCol & Rng.Row).Font.Size = 24 ' Top5 Fontサイズ
ElseIf Application.WorksheetFunction. _
Rank(Rng.Value, Range(ChkValHani)) <= 10 Then
N = N + 1
Range(CngFSizeCol & Rng.Row).Font.Size = 18 'Top6~10 Fontサイズ
End If
End If
If N = 10 Then Exit For
Next Rng
Application.ScreenUpdating = True
End Sub
No.3
- 回答日時:
> 条件付き書式では対応できないので、VBAで処理ができたらと思っています。
この内容から察すると「条件付き書式」のように無意識で自動的にフォントが変わる
ことを希望していると思います。
次のコードは、ランキングの基になる売上数値等を変更すると、その都度自動的に
フォントサイズも更新されます。いちいちマクロを実行する必要はありません。
一応、コードの設定方法を書いておきますので、ご存知でしたら、読み飛ばしてください。
・使用しているシートのシート名タブを右クリックして「コードの表示」を指定します。
・開いたコードウィンドウに下記コードをコピーして貼り付けます。
・現状に合わせて、3~4、(8)行目の指定内容を修正します。
・Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
・メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を
「中」を選択して[OK]します。
・以上で設定完了です。
これで、自動的にフォントサイズが設定されますが、如何でしょうか。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rng As Range
Const CngFSizeCol = "A" ' フォントサイズを変更する「列」を文字列で指定
Const ChkValHani = "B2:B1000" ' 順位を判定する「数値データ範囲」を文字列で指定
Dim N As Integer
Application.ScreenUpdating = False
For Each Rng In Range(ChkValHani)
Range(CngFSizeCol & Rng.Row).Font.Size = 11 ' Top10 以外Fontサイズ
If Application.WorksheetFunction.Rank(Rng, Range(ChkValHani)) <= 5 Then
N = N + 1
Range(CngFSizeCol & Rng.Row).Font.Size = 24 ' Top5 Fontサイズ
ElseIf Application.WorksheetFunction.Rank(Rng, Range(ChkValHani)) <= 10 Then
N = N + 1
Range(CngFSizeCol & Rng.Row).Font.Size = 18 'Top6~10 Fontサイズ
End If
If N = 10 Then Exit For
Next Rng
Application.ScreenUpdating = True
End Sub
回答ありがとうございます。
早速試してみました。完璧です!!!
ありがとうございます!!!
もう一点質問なのですが、
フォントサイズを変更する「列」が複数列の場合は
どうしたらよいのでしょうか?
B列 | C列 | D列 |
ランキング | 担当者名 | 売上(順位判定数値)
B~D列の3列のフォントを変更したいと考えています。
(1)の方がおっしゃるように、最初の質問できちんと
表の構成を記載すべきですね、二度手間ですみません。
No.2
- 回答日時:
売上高の積もりでA1:A10にランダムの積もりで
4、9、5、3、2、6、7、1、8、10
と入れました。
----
VBEの画面に
Sub test01()
For i = 1 To 10
r = WorksheetFunction.Rank(Cells(i, "A"), Range("A1:A10"))
Cells(i, "B") = r
Select Case r
Case Is >= 6
Cells(i, "A").Font.Size = 16
Case Is >= 1
Cells(i, "A").Font.Size = 24
End Select
Next i
End Sub
を貼りつけて、実行してください。
-----
A1:B10は下記になり
47
92
56
38
29
65
74
110
83
101
A2,A6、A7、A9、A10は24Ptになりました。その他は16Pt。(B列はランク数字を参考に出したものです。)
ご質問者の本番に合わせては、どこをどう変えれば良いかはわかりますよね。
Rank関数のクセについてはご注意を。(同じ値があったときのランク数字の問題など。)
No.1
- 回答日時:
ランキングが記入される位置と、フォントサイズが変更される文字列の位置を書いてもらった方がいいと思います。
また、試されたSampleがあるのならそのコードも紹介してもらえませんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで条件付き書式を使わずにセルの文字の色を変える方法を教えて下さい 8 2023/07/28 01:15
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- その他(Microsoft Office) エクセル 条件付き書式 日をまたぐ塗りつぶし 1 2023/01/13 18:00
- Visual Basic(VBA) エクセル VBA 条件によるセル点滅 お詳しい方 ご教授をお願いします。 Excelファイルにて 現 1 2022/11/03 15:53
- Excel(エクセル) 【Excel:条件付き書式 データバー】 正負の軸の位置を変更する方法を教えてください 3 2023/01/08 19:41
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) エクセルの祝日に色が反映しない 4 2022/05/18 09:58
- Excel(エクセル) 条件付き書式でフォント色を赤に設定しましたが、 2 2023/07/29 14:17
- その他(Microsoft Office) ランクイコール関数について教えてください。 例えば A、B組があったとして、1、2、3班に分かれてい 2 2023/07/05 21:33
このQ&Aを見た人はこんなQ&Aも見ています
-
セルの書式設定のフォントやサイズの設定はできないの
Excel(エクセル)
-
エクセル関数について(フォントサイズ変更)
Excel(エクセル)
-
excel:条件付きでセルの文字サイズを変える方法は?
Excel(エクセル)
-
-
4
VBAで条件によりフォントサイズを自動で変更したい2
Excel(エクセル)
-
5
Excelで条件付き書式によるフォント設定
Excel(エクセル)
-
6
エクセルでセルのフォントサイズを取得する関数?
Excel(エクセル)
-
7
関数で抽出したセルの一部の文字を変更したい
Excel(エクセル)
-
8
Excel2007条件付書式でフォントを変更したい
その他(Microsoft Office)
-
9
セルの書式設定で一部のフォントサイズを変更したい
その他(Microsoft Office)
-
10
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
11
VBAで条件によりフォントサイズを自動で変更したい
Excel(エクセル)
-
12
Excelの入力規則で2列表示したい
Excel(エクセル)
-
13
Excelの条件付き書式設定の太い罫線
Excel(エクセル)
-
14
excel関数式の一部を太字にする
その他(Microsoft Office)
-
15
エクセルで折り返しと縮小の同時設定は無理?
Excel(エクセル)
-
16
VBAで特定の文字が入力されたセルを選択
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワードで英単語を入力すると文...
-
エクセル表の行がメール添付し...
-
差し込み印刷された時の文字の...
-
ワードやエクセルで文字を縦長...
-
メッセージボックスに表示する...
-
箇条書きの数字の一部の色を変...
-
excelで文字幅(倍率)を指定す...
-
アクセスのレポートで文字縮小...
-
A4の紙いっぱいに2文字を印刷...
-
Wordで数字(文字)の下に小さ...
-
急に文字が細くて、見づらくな...
-
緊急!エクスプローラーの閉じ...
-
A4サイズの用紙いっぱいに1文字...
-
Chem Drawの使い方
-
ワードの原稿用紙、文字ずれに...
-
ワード2002の文字サイズ変...
-
セルの条件によってフォントサ...
-
ワードの段(落)間を7mmにした...
-
Excel2007でハイパーリンクを設...
-
スタートメニューのフォントサ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコンの表示フォントが突然...
-
ワードで英単語を入力すると文...
-
差し込み印刷された時の文字の...
-
ワードやエクセルで文字を縦長...
-
箇条書きの数字の一部の色を変...
-
メッセージボックスに表示する...
-
急に文字が細くて、見づらくな...
-
Excel2007でハイパーリンクを設...
-
エクセル表の行がメール添付し...
-
エクセル:1行のはずが2行にな...
-
excelで文字幅(倍率)を指定す...
-
Chem Drawの使い方
-
縦書きで途中から2行にする場合...
-
Excelエクセル ヘッダの文字サ...
-
ワードの原稿用紙、文字ずれに...
-
A4サイズの用紙いっぱいに1文字...
-
ワードで、文字の大きさを変え...
-
セルの条件によってフォントサ...
-
アクセスのレポートで文字縮小...
-
エクセルのテキストボックス内...
おすすめ情報