Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Проиндексировать столбцы в коде - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проиндексировать столбцы в коде (Макросы/Sub)
Проиндексировать столбцы в коде
Aleksej Дата: Понедельник, 27.03.2017, 11:06 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 69
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток уважаемые форумчане!

Нужен опыт профессионалов.

Собрался написать макрос автоматизации для большой таблицы (около 130 столбцов)
Возник вопрос, как правильно в коде прописать (проиндексировать столбцы), т.к. в будущем возможно добавление столбцов прямо в середину таблицы,
чтоб после каждого добавления столбца, весь код руками не править.

Спасибо! :)
К сообщению приложен файл: 123.xls (26.0 Kb)
 
Ответить
СообщениеДоброго времени суток уважаемые форумчане!

Нужен опыт профессионалов.

Собрался написать макрос автоматизации для большой таблицы (около 130 столбцов)
Возник вопрос, как правильно в коде прописать (проиндексировать столбцы), т.к. в будущем возможно добавление столбцов прямо в середину таблицы,
чтоб после каждого добавления столбца, весь код руками не править.

Спасибо! :)

Автор - Aleksej
Дата добавления - 27.03.2017 в 11:06
nilem Дата: Понедельник, 27.03.2017, 11:19 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Aleksej, привет
можно вставить "умную" таблицу и обращаться к столбцам по именам или по индексам, типа
[vba]
Код
Range("Таблица2[ля]").Select
Range("Таблица2").Columns(3).Select
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеAleksej, привет
можно вставить "умную" таблицу и обращаться к столбцам по именам или по индексам, типа
[vba]
Код
Range("Таблица2[ля]").Select
Range("Таблица2").Columns(3).Select
[/vba]

Автор - nilem
Дата добавления - 27.03.2017 в 11:19
_Boroda_ Дата: Понедельник, 27.03.2017, 11:25 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Если при добавлении столбцов давать им следующие по порядку индексы (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]
К сообщению приложен файл: 123-1-1.xls (50.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕсли при добавлении столбцов давать им следующие по порядку индексы (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]

Автор - _Boroda_
Дата добавления - 27.03.2017 в 11:25
Aleksej Дата: Понедельник, 27.03.2017, 11:34 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 69
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
nilem, _Boroda_, спасибо за наводку, сам бы до такого не додумался ),
буду разбираться. :)
 
Ответить
Сообщениеnilem, _Boroda_, спасибо за наводку, сам бы до такого не додумался ),
буду разбираться. :)

Автор - Aleksej
Дата добавления - 27.03.2017 в 11:34
китин Дата: Понедельник, 27.03.2017, 11:37 | Сообщение № 5
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
а так до кучи
[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
[/vba]
К сообщению приложен файл: _123.xls (37.0 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеа так до кучи
[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
[/vba]

Автор - китин
Дата добавления - 27.03.2017 в 11:37
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проиндексировать столбцы в коде (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!