VBAで条件により文字の大きさを変更する

文字サイズ繰り返し
スポンサーリンク

エクセルで作る表などで、データがある行数が少ない時は文字を大きくして、行数が多い時は文字を小さくしてA4用紙いっぱいに印刷したい時ってありませんか?

VBAで使用している行数を読み取り自動的に文字の大きさを指定させれば完成です。

文字サイズ(フォント)をVBAコードで記述基本はこちらもどうぞ

あわせて読みたい
VBAで指定範囲内の文字サイズを指定する せっかく作ったのに意図しない文字サイズ変更をされて、印刷レイアウトがぐちゃぐちゃになった経験ありませんか? 作業時間効率化の為にExcel-VBAのユーザーフォームで...
目次

Select Caseで条件付け

Select Caseステートメントを使うと、1つ目の条件に合致すると処理を実行して、条件に合わないと次の2つ目の条件に移って処理を続け、2つ目の条件が合致すると実行、さらに条件に合わないと次の条件、3つ目に移るという具合です。

要するに、条件に合うまで次から次へと処理を行ってくれる便利なものですが、重複するので詳しい説明はここでは省略します。

あわせて読みたい
複数の条件で判定を評価するVBA~Select Case If~Thenを覚えたのに、複数条件を複数の答えだすVBAで悩みませんでしたか? とりっぷぼうる 例えばテストの結果で5段階評価することありませんか? テストの結果が90点...

このSelect Caseの特徴を利用して、次の手順でVBAコードを記述すれば完成すますよ!

  1. 特定のセルに使用している行数を読み込ませる
  2. 読み込ませたセルの値をSelet Caseの基準にする
  3. Case Isの条件式と対象が条件式と合致する時の処理をする

それでは、手順1~3を順にVBAコードを記述しましょう。

特定のセルに使用している行数を読み込ませる

表の入力済みデータのセルの数を数えるのは、表の欄外の空いているセルに置いておけば簡単で、使用するエクセル関数はCOUNTA関数です。

表の欄外のセルAA1に記述

=COUNTA(A3:A40)

COUNTA関数を各セルは表の欄外ならどこでも構いませんので、空いているセルにデータ入力済セルを数えます。

今回のデータリスト名がセルA3~A40までの範囲内なので、数えた数をセルAA1にたまたま書きましたので、このセルを基準にSelect Caseステートメントを使用します。

Select Caseで文字サイズ指定

実際に使用しているリスト表では、少なくても25行で最大で37行なので、条件式であるCase Isは13個ありますが、そのまま載せるとダラダラ長くなって見づらいので、25行から27行までの3行に省略して書きました。

※ユーザーフォームのコマンドボタンにVBAコードを書いた例です。

VBAコード

Private Sub CommandButton1_Click()
Select Case Worksheets(“Sheet1”).Range(“AA1”).Value
Case Is <= 25
Range(“A3:T40”).Font.Size = 17
Case Is = 26
Range(“A3:T40”).Font.Size = 16
Case Is = 27
Range(“A3:T40”).Font.Size = 15
End Select
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. Select Caseステートメントを使い「Sheet1」のセルAA1の値を参照
  3. 25以下ならば
  4. セル範囲内(A3:T40)の文字サイズを17ポイントにする
  5. 26ならば
  6. セル範囲内(A3:T40)の文字サイズを16ポイントにする
  7. 27ならば
  8. セル範囲内(A3:T40)の文字サイズを15ポイントにする
  9. Select Caseステートメント終了
  10. マクロ記録終了

文字サイズは大きすぎて切れてしまっては意味が無いので、印刷プレビューなどを確認したうえで設定して下さいね。

とりっぷぼうる
とりっぷぼうる

文字サイズだけでなく一緒に行の高さや列の幅も変更すれば、見栄え良くなりますよ。

これに、印刷コードを組み合わせれば文字サイズ変えてから必要枚数を用紙に見栄え良く印刷できますよ!

あわせて読みたい
エクセルVBAで印刷枚数入力テキストボックス付き印刷フォームを作る 印刷する時に、印刷の部数を指定するために何度もクリックするのって面倒だから、枚数を入力するだけで印刷できるようになったら便利なんだけどなあ~って思ったことあ...

セルの操作関連の参考VBA集

目次