Добавление этого ответа на запрос в комментариях.
Сначала вы захотите создать лист - это может быть скрытый лист - этот код сделает это за вас, но вы можете сделать это вручную.
Sub Create_Hidden_Control_sheet()
Dim ws As Worksheet
With ThisWorkbook
Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
End With
ws.Name = "Control"
ws.Visible = xlSheetVeryHidden
ws.Range("A1") = "Last cell used"
ws.Range("B1") = 0
End Sub
Вы будете использовать ячейку B1 на этом листе для хранения последнего использованного столбца.
Вы захотите изменить свой worksheet_change, чтобы сделать что-то похожее на это
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Integer
If Target.Address = "$B$2" And Target.Value > 0 Then
a = Sheets("Control").Range("B1") + 1
If a > 10 Then
a = 1
End If
Sheets("Sheet2").Cells(2, a) = Sheets("Sheet1").Range("B2").Value
Sheets("Control").Range("B1") = a
End If
End Sub