Собрался написать макрос автоматизации для большой таблицы (около 130 столбцов) Возник вопрос, как правильно в коде прописать (проиндексировать столбцы), т.к. в будущем возможно добавление столбцов прямо в середину таблицы, чтоб после каждого добавления столбца, весь код руками не править.
Спасибо!
Доброго времени суток уважаемые форумчане!
Нужен опыт профессионалов.
Собрался написать макрос автоматизации для большой таблицы (около 130 столбцов) Возник вопрос, как правильно в коде прописать (проиндексировать столбцы), т.к. в будущем возможно добавление столбцов прямо в середину таблицы, чтоб после каждого добавления столбца, весь код руками не править.
Если при добавлении столбцов давать им следующие по порядку индексы (131, 132, ...), то вот такой вариант можно [vba]
Код
c1_ = Cells(1, Columns.Count).End(1).Column 'Допустим, нам нужно засунуть в переменные столбцы 'с индексами 2, 14 и 37 (с ними мы потом будем работать) For i = 1 To c1_ Select Case Cells(1, i) Case 2 cn1_ = i Case 14 cn2_ = i Case 37 cn3_ = i End Select Next i
[/vba]
Если при добавлении столбцов давать им следующие по порядку индексы (131, 132, ...), то вот такой вариант можно [vba]
Код
c1_ = Cells(1, Columns.Count).End(1).Column 'Допустим, нам нужно засунуть в переменные столбцы 'с индексами 2, 14 и 37 (с ними мы потом будем работать) For i = 1 To c1_ Select Case Cells(1, i) Case 2 cn1_ = i Case 14 cn2_ = i Case 37 cn3_ = i End Select Next i
Private Sub Worksheet_Change(ByVal Target As Range) Dim I1& I1 = Cells(1, Columns.Count).End(xlToLeft).Column If Intersect(Target, Range(Cells(1, 1), Cells(1, I1))) Is Nothing Then Exit Sub For i = 1 To I1 If Cells(1, i).Value = "" Then Cells(1, i).Value = i End If Next End Sub
[/vba]
а так до кучи [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim I1& I1 = Cells(1, Columns.Count).End(xlToLeft).Column If Intersect(Target, Range(Cells(1, 1), Cells(1, I1))) Is Nothing Then Exit Sub For i = 1 To I1 If Cells(1, i).Value = "" Then Cells(1, i).Value = i End If Next End Sub