【エクセルVBA】行間や列幅を原図通りリセットするマクロの導入方法
編集をしていて行間と列幅がぐちゃぐちゃになってしまった。。
入力した内容をそのままに行間や列幅だけ元に戻したい!
このような問題を解決する行間・列幅自動調整マクロの使い方・導入手順を詳しくご紹介します。
行間・列幅自動調整マクロのイメージはこんな感じ
行間・列幅自動調整マクロを実行するだけで一瞬で原図と同じ行間・列幅にリセットすることができます。
決められた様式を編集することが多い!という方におすすめのマクロです。
下記のリンクから行間・列幅自動調整マクロをダウンロードしてすぐに利用することができます。
気になる方は是非チェックしてみてください。
目次
行間・列幅自動調整マクロとは
行間・列幅自動調整マクロがどのような処理をするのかを下記の動画で詳しくご紹介しています。
行間・列幅自動調整マクロを実行すると、
行間・列幅の大きさがランダムに設定されいる様式(原図)と同じ行間・列幅に編集
されます。
このマクロの最大の特徴が、
セルに入力した内容をそのままに、行間・列幅を原図の様式通りにリセットできる!
ということです。
原図となる様式をコピペして編集していると、
行間・列幅がぐちゃぐちゃになってしまい印刷範囲がずれてしまう
という問題が発生することがありますよね。
編集は完了したのに印刷範囲がどうしても合わせられない。セルに入力した内容はそのままに、行間・列幅を原図の通り戻したい。
原図となるシート、またはブックを整備しておけば、
ぐちゃぐちゃになった行間・列幅を一瞬で原図通りにリセットすることが可能です。
「原図」シートから行間・列幅を自動調整するマクロの導入方法
「原図」シートの情報から行間・列幅を調整するマクロの導入方法をご紹介します。
導入手順① 原図シートを作成
一番左側にシート名「原図」を作成します。
導入手順② VBAを作成
VBA編集画面でModule1を作成します。
導入手順③ 行間・列幅自動調整マクロのコードを記入
行間・列幅自動調整マクロのサンプルコード
Sub 列幅()
Dim Ash As Worksheet
Set Ash = ThisWorkbook.Worksheets("原図")
For i = 1 To 50
retu = Ash.Cells(1, i).ColumnWidth
ActiveSheet.Cells(1, i).ColumnWidth = retu
gyo = Ash.Cells(i, 1).RowHeight
ActiveSheet.Cells(i, 1).RowHeight = gyo
Next
End Sub
サンプルコードをModule1にコピペしてください。
これで行間・列幅自動調整マクロの導入は完了です。
注意点として、
サンプルコードでの行間・列幅の調整範囲は1~50列、1~50行まで
です。
調整範囲をもっと広げたい場合はVBAの4行目を調整してください。
「原図」ブックから行間・列幅を自動調整するマクロの導入方法
「原図」ブックの情報から行間・列幅を調整するマクロの導入方法をご紹介します。
導入手順① 原図ブックを作成
ブック名「原図」を作成します。
導入手順② VBAを作成
VBA編集画面でModule1を作成します。
行間・列幅自動調整マクロのサンプルコード
Sub 列幅をエクセルファイルから取得()
Dim Filepath
Filepath = "C:\Users\suzu\Desktop\仕事\ブログ\Excel\列幅取得\原図.xlsm"
If Dir(Filepath) = "" Then
MsgBox "指定したファイルは存在しない"
Exit Sub
End If
Dim Abook As Workbook
Set Abook = Workbooks.Open(Filepath)
ThisWorkbook.Activate
Set Abook = Workbooks("原図.xlsm")
For i = 1 To 50
retu = Abook.Sheets("原図").Cells(1, i).ColumnWidth
ThisWorkbook.ActiveSheet.Cells(1, i).ColumnWidth = retu
gyo = Abook.Sheets("原図").Cells(i, 1).RowHeight
ThisWorkbook.ActiveSheet.Cells(i, 1).RowHeight = gyo
Next
Application.DisplayAlerts = False
Workbooks("原図.xlsm").Close
Application.DisplayAlerts = True
End Sub
サンプルコードをModule1にコピペしてください。
原図ブックから行間・列幅の情報を取得するには、
原図ブックの保存場所を指定
する必要があります。
なので、
コードの3行目に原図ブックが保存されている場所を記入してください。
私のパソコンでは、
C:\Users\suzu\Desktop\仕事\ブログ\Excel\列幅取得\原図.xlsm
という入力になっています。
行間・列幅自動調整マクロに使われているVBA
VBAを使って行間や列幅の間隔を変更するには、「RowHeight」、「Height」と「ColumnWidth」、「Width」のプロパティを使います。
コツさえ掴めば簡単に扱うことができるので是非使い方をマスターしてみてください。
この2つのプロパティ以外にも「AutoFit」を使って行間や列幅を変更する方法がありますが今回の記事では省略します。
「AutoFit」を使ってみたい!という方は下記の記事を参考にしてください。
列幅を変更するVBAの使い方
VBAで列幅を変更するには、「ColumnWidth」、「Width」どちらかのプロパティを使用します。
この2つのプロパティには以下のような違いがあるので注意してください。
- 「ColumnWidth」は標準フォント1文字単位の大きさ
- 「Width」はポイント単位の大きさ
また、列幅の情報を取得する列の指定方法は1つではなくいくつかの方法があります。
下記ではいろんなパターンでの列幅を変更するコードを紹介しているので、プロパティの違いや列の指定方法の理解を深めるために参考にしてみてください。
A列、B列、C列の列幅を取得するサンプルマクロ
Sub サンプル()
Dim s As Double
a = Cells(1, 1).ColumnWidth
b = Range("B1").ColumnWidth
c = Columns(3).ColumnWidth
d = Cells(1, 1).Width
e = Range("B1").Width
f = Columns(3).Width
Cells(1, 1) = a
Cells(1, 2) = b
Cells(1, 3) = c
Cells(2, 1) = d
Cells(2, 2) = e
Cells(2, 3) = f
End Sub
サンプルマクロの実行結果
1行目にはColumnWidthで取得した数字(標準フォント1文字単位の値)
2行目にはWidthで取得した数字(ポイント単位の値)
が表示されています。
行間を変更するVBAの使い方
VBAで行間を変更するには、「RowHeight」、「Height」どちらかのプロパティを使用します。
列幅を変更するVBAとは異なり、どちらのプロパティを使用しても標準フォント1文字の大きさになるので注意してください。
- 「RowHeight」は標準フォント1文字単位の大きさ
- 「Height」は標準フォント1文字単位の大きさ
1行目、2行目、3行目の行間を取得するサンプルマクロ
Sub testo2()
a = Cells(1, 1).RowHeight
b = Range("B2").RowHeight
c = Rows(3).RowHeight
d = Cells(1, 1).Height
e = Range("B2").Height
f = Rows(3).Height
Cells(1, 1) = a
Cells(2, 1) = b
Cells(3, 1) = c
Cells(1, 2) = d
Cells(2, 2) = e
Cells(3, 2) = f
End Sub
サンプルマクロの実行結果
行間や列幅の編集作業はVBAがおすすめ
行間や列幅の調整は手動ではなくVBAによる自動化がおすすめです。
おすすめの理由がこちら
- 統一感のあるキレイな資料作りができる
- 編集作業の効率化
- 様式のバランスを崩さず編集することが可能になる
原図となる様式さえちゃんと整備しておけば、編集中にぐちゃぐちゃになった行間や列幅を一瞬で原図通りにリセットすることが可能です。
この記事の冒頭でサンプルとして紹介した行間・列幅自動調整マクロは、
あると安心!決められた様式をコピペして編集することが多い方にとってめちゃくちゃ使えるマクロ
なので持っておいて損することはありません。
自分でマクロを設定するのはめんどくさい!と言う方は上記リンクからダウンロードしてお使いください。
自分のパソコンに保存しておけばいざというときすぐに使うことができるので便利です。
ディスカッション
コメント一覧
まだ、コメントがありません