行の高さをセンチで指定したい!標準の設定からシートを自分の好みの設定に変更 11回

シートの行の高さをセンチで指定したい!標準の設定からシートを自分の好みの設定に変更

ユーザーフォーム講座 動画編 11回
標準の設定からシートを自分の好みの設定に変更

動画でExcel 標準の設定からシートを自分の好みの設定に変更

標準の設定からシートを自分の好みの設定に変更

標準のフォントを自分の好きな規定のフォントで、常に使いたいときは、Excelのオプションを開いてもらって 全体という項目の中ほどにある、新しいブックの作成時というところで、規定フォントと使用するフォントを選ぶことができます。
しかし「行の高さをセンチで指定したい!」そんなことはオプション設定ではできません。マクロを使いましょう。

  • 【動画で解説している内容】
  • 1.Excelのデフォルトシート設定を変更する方法
  • 2.新しいワークブック作成時に好みのフォントとサイズを設定する方法
  • 3.VBAマクロを使用して行の高さと列の幅をセンチメートル単位で変更する方法
  • 4.シートごとに異なる設定を適用する方法
  • 5.ワークブック全体の設定をカスタマイズする方法
  • 6.設定を標準設定に戻す方法
  • 7.ExcelのVBAコードの基本的な構文と書き方

(サンプルファイルは、こちらです。 標準の設定からシートを自分の好みの設定に変更、サンプル11回

マクロ動画 標準の設定からシートを自分の好みの設定に変更

https://youtu.be/1XEj2o47rxM

Excel の標準のフォントと行の高さ列の幅

オプションの全般タブにある、新しいブックの作成時の項目で規定として使うフォントと、フォントサイズを変更することができます。
図では規定値の游ゴシックを、Webからダウンロードしてインストールした、07やさしさゴシックに変更しました。フォントサイズは規定値の11のままです。
ただし、これは自分でつかう場合の設定です。組織で使うExcelの場合は、その決まりに従ってください。

NAMAE1

VBAでシートのフォントと行の高さ列の幅を指定

マクロを使ってシートのフォントの種類やサイズを変更したり、行の高さ列の幅を変更する場合は、次のように書くことができます。
with active sheet このactive sheetだけ変更したいと思います。
そして一応下に
end withですね。

NAMAE2

With構文を入れ子で使っています。
With構文を使うと、ここでは 親オブジェクトがアクティブシート ですが、 共通の親オブジェクトを省略した書き方がそのWith構文の内側でできるわけです。そうするとコードがすっきりします。

内側のWith構文で、フォントの種類とサイズを指定しています。
外側で、行の高さをポイントで指定、列幅を文字数で指定しています。この指定方法がデフォルトです。

NAMAE3

現在のフォントでシートの行の高さと列の幅の規定値は以下のようになっています。

NAMAE4

実行すると、このように変わります。
コードは以下のようになります。列は1列目だけを文字数3に設定しました。
列全体を設定したい時は、列番号は記述しません。
.Columns.ColumnWidth = 3

NAMAE5
Sub シートフォントをセット()
    With ActiveSheet
        With .Cells.Font
            .Name = "メイリオ"
            .Size = 16
        End With
        .Rows.RowHeight = 28  'ポイント
        .Columns(1).ColumnWidth = 3  '文字数
    End With
End Sub

今度は、フォントを変更し、列全体を設定してみました。

NAMAE6

コードは以下のように設定しました。
マクロなら、 気に入った設定ができるまで、何度でもコードを書き換えることができますね。

Sub シートフォントをセット2()
    With ActiveSheet
        With .Cells.Font
            .Name = "BIZ UDPゴチック"
            .Size = 16
        End With
        .Rows.RowHeight = 28
        .Columns.ColumnWidth = 3
    End With
End Sub

標準の設定に戻したい

標準のシートの設定に戻したい場合は次のコードで簡単に戻すことができます。
行の高さと列の幅について、規定のフォントを変更すると微妙に変わる場合があります。
以下は、Excelの2010以降、Excel2016の時の設定です。

ご自分のExcelのバージョンで新規ブックを作成してサイズは確認しておくと良いでしょう。

Sub 標準設定()
    With ActiveSheet
        With .Cells.Font
            .Name = "游ゴチック"
            .Size = 11
        End With
        .Rows.RowHeight = 18.75
        .Columns.ColumnWidth = 8.38
    End With
End Sub

センチで指定する

今回のマクロは実は行の高さや列の幅をセンチで設定したいという内容です。
それでVBAのメソッドにApplication.CentimetersToPointsというメソッドがあって ポイントをセンチに変えるということができるのですが、それはRowHeightの場合です。
RowHeightはポイントで表示されていますからそのまま使えます。
けれどもcolumnsの場合は、文字数なので実際にその表でどの文字を使ってるかということによっても変わってきてしまうのです。
変換処理をしなければいけません。元の基準が同じでないので、厳密にはピッタリにはならないこと、誤差があることを了承してください。
詳しくは動画内で説明しています。

NAMAE7

上記は行の高さや列の幅をセンチで設定するだけのコードです。
同じコードを3回繰り返しているのは、通常しない操作なので、Excelが抵抗する(?ほんとに?)ので繰り返しています。

NAMAE8

上記は1列目だけを1cmに設定しましたが、全体を設定するときは
Columns(1)Columnsに変更してください。

Sub 行列センチでセット1()
    With ActiveSheet
        With .Cells.Font
            .Name = "メイリオ"
            .Size = 12
        End With
        Rows("1:10").RowHeight = Application.CentimetersToPoints(1)
        Columns(1).ColumnWidth = Application.CentimetersToPoints(1) _
                                * (Range("A1").ColumnWidth / Range("A1").Width)
        Columns(1).ColumnWidth = Application.CentimetersToPoints(1) _
                                * (Range("A1").ColumnWidth / Range("A1").Width)
        Columns(1).ColumnWidth = Application.CentimetersToPoints(1) _
                                * (Range("A1").ColumnWidth / Range("A1").Width)
    End With
End Sub

こちらは、範囲を指定して1cmに設定したコードです。

NAMAE9
Sub 行列センチでセット2()
    With ActiveSheet
        With .Cells.Font
            .Name = "メイリオ"
            .Size = 12
        End With
        Rows("1:10").RowHeight = Application.CentimetersToPoints(1)

        Columns("A:J").ColumnWidth = Application.CentimetersToPoints(1) * (Range("A1").ColumnWidth / Range("A1").Width)
        Columns("A:J").ColumnWidth = Application.CentimetersToPoints(1) * (Range("A1").ColumnWidth / Range("A1").Width)
        Columns("A:J").ColumnWidth = Application.CentimetersToPoints(1) * (Range("A1").ColumnWidth / Range("A1").Width)
    End With
End Sub