このサイト・インストラクターのネタ帳のアクセスログを眺めていて
「excel vba 列幅 コピー」
「エクセル vba 列幅のコピー」
といった検索キーワードに気づきました。
列幅をコピーするサンプルマクロ
[形式を選択して貼り付け]ダイアログで[列幅]を指定して貼り付けする操作をマクロ記録すると、
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
といったコードが作られます。
このRangeオブジェクトのPasteSpecialメソッドを使った、
以下のSubプロシージャを実行すると、C:H列の列幅が、A列と同じになります。Columns("A").Copy
Columns("C:H").PasteSpecial xlPasteColumnWidths
Application.CutCopyMode = False
End Sub
サンプルマクロの解説
[形式を選択して貼り付け]ダイアログで[列幅]を指定して貼り付けする操作のマクロ記録でできた、
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
といったコードで、列幅の貼り付けに必要なのは、引数・Pasteに指定された、定数・xlPasteColumnWidthsの部分で、
他の引数は不要なので、上記プロシージャでは削除しています。
定数名・xlPasteColumnWidthsから、何を指定しているのか意味はわかりますから、名前付き引数ではなく標準引数にしています。
実際に必要な処理は、
Columns("A").Copy
Columns("C:H").PasteSpecial xlPasteColumnWidths
だけですが、このままだとExcelでコピーを行った直後の状態となるので、
Application.CutCopyMode = False
を入れています。
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » VBAで列幅をコピーする