
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
セルの書式設定のフォントやサイズの設定はできないの
Excel(エクセル)
-
エクセル関数について(フォントサイズ変更)
Excel(エクセル)
-
VBAで条件によりフォントサイズを自動で変更したい2
Excel(エクセル)
-
-
4
excel:条件付きでセルの文字サイズを変える方法は?
Excel(エクセル)
-
5
Excelで条件付き書式によるフォント設定
Excel(エクセル)
-
6
関数で抽出したセルの一部の文字を変更したい
Excel(エクセル)
-
7
エクセルでセルのフォントサイズを取得する関数?
Excel(エクセル)
-
8
セルの書式設定で一部のフォントサイズを変更したい
その他(Microsoft Office)
-
9
エクセルで折り返しと縮小の同時設定は無理?
Excel(エクセル)
-
10
Excel2007条件付書式でフォントを変更したい
その他(Microsoft Office)
-
11
excel関数式の一部を太字にする
その他(Microsoft Office)
-
12
VBAで条件によりフォントサイズを自動で変更したい
Excel(エクセル)
-
13
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
14
Excelの入力規則で2列表示したい
Excel(エクセル)
-
15
エクセルで特定の列が0表示の場合、その行を非表示にしたい
Excel(エクセル)
-
16
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
17
Excelの関数について、特定の文字を入れると斜線や線を入れることは出来ますか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
差し込み印刷された時の文字の...
-
ワードで英単語を入力すると文...
-
箇条書きの数字の一部の色を変...
-
A4サイズの用紙いっぱいに1文字...
-
急に文字が細くて、見づらくな...
-
excelで文字幅(倍率)を指定す...
-
ワードやエクセルで文字を縦長...
-
縦書きで途中から2行にする場合...
-
メッセージボックスに表示する...
-
Wordについて
-
A4の紙いっぱいに2文字を印刷...
-
Chem Drawの使い方
-
あいさつ文のフォントについて
-
大学の教授から、A4用紙1ページ...
-
ポップアップ表示の文字サイズ...
-
ワードのフォントサイズの固定
-
ワードでA4 1行40字×30行...
-
Win11 のメモ帳 文字サイズ
-
Mac Pages 行数、桁数の設定の...
-
マイクロソフトワードの標準行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ワードで英単語を入力すると文...
-
差し込み印刷された時の文字の...
-
ワードやエクセルで文字を縦長...
-
箇条書きの数字の一部の色を変...
-
メッセージボックスに表示する...
-
エクセル表の行がメール添付し...
-
パソコンの表示フォントが突然...
-
急に文字が細くて、見づらくな...
-
excelで文字幅(倍率)を指定す...
-
Chem Drawの使い方
-
Wordについて
-
Excel2007でハイパーリンクを設...
-
Excelエクセル ヘッダの文字サ...
-
A4サイズの用紙いっぱいに1文字...
-
縦書きで途中から2行にする場合...
-
セルの条件によってフォントサ...
-
ワードの原稿用紙、文字ずれに...
-
エクセル:1行のはずが2行にな...
-
エクセルのテキストボックス内...
-
Win11 のメモ帳 文字サイズ
おすすめ情報