MENU

参加人数を取得して成績表で行の高さと文字大きさを自動調整して印刷

行の高さと文字の大きさ自動調整

エクセルで作っているボウリング成績表も当然ですが、A4サイズの用紙に印刷するのに見やすくするために行の高さは少し余裕を持たせる程度に文字の大きさを決めていますが、人数により高さと文字の大きさを毎回手作業で変更するのはとても面倒で大変なので、何かいい方法がないか?と探していますよね。

西船ボウルでも10人~30人程の個人戦でのリーグ戦を同じエクセルで作ったリーグスタンディングを使っているので、参加者の名前を登録すると自動的に人数を数えて成績表の不要な行を非表示にした分、高さに余裕ができるので、高さ調整と文字の大きさ調整を、エクセルVBAを使って自動化しています。

使うエクセルVBA
  • 入力済み最終行取得「Cells(Rows.Count, 1).End(xlUp).Row」
  • 繰り返し処理「For~Next」
  • 行の高さ「RowHeight」
  • 文字の大きさ「Font.Size」

ボタンを配置してVBAコードを登録するだけで、コマンドボタンを1クリックで一瞬でハイゲームを見つけ出してくれるので、あっという間にスタンディングが終わりますよ。

目次

行の高さと文字大きさを自動調整

ボウリング成績表高さ未調整
ボウリング成績表高さ未調整

西船ボウルで使用しているリーグ戦の成績表ですが、このまま参加者の皆さんへ渡すことできませんよね。

画像では27人目が途切れていますが、実際は最大40名まで登録可能な個人戦のリーグスタンディングですが、サンプリ画像では15名になっています。

ピン君

16人目から不要なのでメンバー登録をしたら15名だとわかるので、自動的に16人目~40人目を非表示・文字大きくします

VBAコード

行の高さと文字大きさを自動調整

Sub 高さ文字()
RF = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To RF
If Cells(i, 21) = 0 Then Rows(i).Hidden = True
Next i
Select Case Worksheets(“RESULT”).Range(“G1”).Value
Case Is <= 15
Sheets(“RESULT”).Range(“3:17”).RowHeight = 75
Sheets(“RESULT”).Range(“A3:T42”).Font.Size = 24
Case Is = 16
Sheets(“RESULT”).Range(“3:18”).RowHeight = 74
Sheets(“RESULT”).Range(“A3:T42”).Font.Size = 24

省略(17名~39名)

Case Is >= 40
Sheets(“RESULT”).Range(“3:42”).RowHeight = 34
Sheets(“RESULT”).Range(“A3:T42”).Font.Size = 18
End Select
End Sub

このエクセルVBAコードをコマンドボタンに登録すれば、1クリックするだけで完成です。

ボウリング成績表高さ自動調整
ボウリング成績表高さ自動調整

解説

たまじい

では1行目から解説じゃ

  1. 「高さ文字」というタイトルでマクロ宣言
  2. 値「RF」は、A列の入力済み最終行の行番号を取得して格納
  3. 変数「i」は、1列目~格納値「RF」行目まで
  4. もし、セル「i」行目21列目(G列)の値が「0」だったら行非表示にする
  5. 「i」行目最終まで繰り返す
  6. シート名「RESULT」セル「G1」の値(参加人数)により処理をする
  7. 値が15以下だったら
  8. 3行目~17行目の行の高さを 75 にする
  9. セルA3~T42の範囲の文字の大きさを 24 にする
  10. 値が16だったら
  11. 3行目~18行目の行の高さを 74 にする
  12. セルA3~T42の範囲の文字の大きさを 24 にする
  13. 省略
  14. 値が40だったら
  15. 3行目~42行目の行の高さを 34 にする
  16. セルA3~T42の範囲の文字の大きさを 18 にする
  17. Select Caseステートメント終了
  18. マクロ記録終了

ポイントは、事前に成績表の外「G列」に参加者リストに名前が入力されたら「1」と表示させる事と、「A列」に参加人数(ここでは1位~40位までの順位)を表示させている事が、下準備です。

そして、入力済み最終行を自動的に探すことで、不要な行を非表示してから必要な行の人数という条件に応じて高さと文字の大きさを設定することです。

たまじい

念の為に、非表示した行を再表示させるVBAコードを伝えておくぞ~

非表示の行を再表示する

Sub 再表示()
Rows.Hidden = False
End Sub

手作業で行の高さや文字の大きさを調整していた時は、やり直しを繰り返しながら5分ぐらいの時間を無駄に使っていましたが、一瞬で自動調整してくれるのですぐに終わるのでとても便利ですよ。

ボウリング成績表で必須のVBAコード

ピンちゃん

エクセルのボタンの配置方法やリボンツールバーの「開発」設定がまだの場合、この機能使えないので設定から始めましょう~

西船ボウルで使用しているエクセルで作っているリーグ成績表(スタンディング)で、必ず使っているVBAコードです。

実際にはワークシート上にコマンドボタンを配置せず、専用の入力フォームも(ユーザーフォーム)作成してフォーム上にボタンなどを配置しています。

成績表作成でよく使う便利機能

エクセルファイル操作の便利機能

よかったらシェアしてね!
  • URLをコピーしました!
目次