サイトアイコン Googleスプレッドシート 完全攻略

【VBA】Excel シート内の幅と高さを別のシートにコピーする方法

Excel VBA 一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

【VBA】Excelで特定のセルを非表示にする方法
VBA使用時に特定のセルを非表示にする方法とは

今回は、とっても価値の高い方法をお伝えします。


これを知ることであなたは、

VBAでシートをコピーする際に、
セルの高さや幅もコピーすることができます。

 

列の幅のコピー

まず、列の幅は、一気にコピペできます。

ペースト(貼り付け)時にxlPasteColumnWidthsを指定すれば、OKです。

サンプル

'列の幅をコピペする
Sub CopyWidth()
Const S_SHEET_NAME = "Sheet1" 'コピー元のシート名

'1行目をコピー
Worksheets(S_SHEET_NAME).Range("A1:F1").Copy

'列の幅を貼り付け
Worksheets(D_SHEET_NAME).Cells(1, 1).PasteSpecial (xlPasteColumnWidths)
End Sub

 

行の高さのコピー

残念ながら、行の高さは列の幅の様に xlPasteRowHeights みたいな感じではできません。

なので、チマチマと1行ずつ RowHeight をコピペする必要があります。

サンプル


Sub CopyWidthHeight()
    Const ROW_LAST = 20  ''最終行番号
    Const COL_LAST = 70  ''最終列番号
    
    Const S_SHEET_NAME = "Sheet1" 'コピー元のシート名
    Const D_SHEET_NAME = "Sheet2" 'コピー先のシート名
    
'    Dim i As Integer
    
    With Worksheets(D_SHEET_NAME)
        '行の高さをコピー
        For i = 1 To ROW_LAST
            .Rows(i).RowHeight = Worksheets(S_SHEET_NAME).Rows(i).RowHeight
        Next i
        
        '列の幅をコピー
        For i = 1 To COL_LAST
            .Columns(i).ColumnWidth = Worksheets(S_SHEET_NAME).Columns(i).ColumnWidth
        Next i
    End With

End Sub

 

サンプルシート

 

最後までご覧いただきありがとうございます。

つぎはこちら

【VBA】Excelフィルタリング後の値を取得する方法
Excelでフィルタリング後の値を別シートに 出力することができます。

Excel VBA 一覧

モバイルバージョンを終了