標準モジュールではなくThisWorkbookモジュールに記載してください。
シート名は実際のものに変えてください。
BOOKの終了時に保存先シートに自動転記します。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim s1 As Worksheet, s2 As Worksheet
Dim c As Integer
Set s1 = Sheets("Sheet1") '現在のシート
Set s2 = Sheets("Sheet2") '保存先のシート
With s2
c = Application.Max(.Cells(1, Columns.Count).End(xlToLeft).Column + 1, 3) '最終列取得
s1.Columns("C:C").Copy '在庫列コピー
.Cells(1, c).PasteSpecial '保存先のシート最終列に貼り付け
Application.CutCopyMode = False 'コピーモード終了
.Cells(1, c) = Date '保存先のシート最終列最上行に日付
.Columns(c).AutoFit '列幅自動調整
End With
End Sub
お礼
ありがとうございました。 解決しました。 慣れた感じの記述で、とても勉強になります。 実は在庫列(Sheet1のC列)に関数が入っていますので、ただそのままコピーだと関数までコピーしてしまい適切ではありませんでしたので、9行目を .Cells(1, c).PasteSpecial Paste:=xlPasteValues のようにさせていただきました。 改めてExcelの便利さと奥深さを痛感しました。 素早いご回答にも感謝です。 ありがとうございました。