Автор Тема: привязка полей UserForm к определенным столбцам таблицы  (Прочитано 840 раз)

Илья

  • Гость
Здравствуйте!
Имеется форма, по средствам которой в таблицу заносятся данные.
Для перенесения данных из формы используется следующее выражение:

ActiveCell.EntireRow.Cells(1)=TextBox30         '1-й столбец
ActiveCell.EntireRow.Cells(2)=ComboBox18     '2-й
ActiveCell.EntireRow.Cells(3)=TextBox7           '3-й
...
ActiveCell.EntireRow.Cells(120)=TextBox95     '120-й

Каким образом в случае вставки в таблицу нового столбца (к примеру "А") возможно внести соответствующие изменения в выражениях (к примеру ActiveCell.EntireRow.Cells(1) заменить на ActiveCell.EntireRow.Cells(2), ActiveCell.EntireRow.Cells(2) заменить на ActiveCell.EntireRow.Cells(3) и т.д.)

Оффлайн Администратор

  • Administrator
  • Сообщений: 1622
Такой вариант. Нужно определять номер столбца по заголовку столбца. То есть нужно усложнить код. Нужно добавить в код поиск нужного заголовка столбца:

Sub Main()
    ActiveCell.EntireRow.Cells(fColIndex("Заголовок столбца 1")).Value = TextBox30
    ActiveCell.EntireRow.Cells(fColIndex("Заголовок столбца 2")).Value = ComboBox18
End Sub

Private Function fColIndex(sHeader As String) As Long
    ' В Rows нужно указать номер строки, в которй находится шапка таблицы.
    fColIndex = Rows(1).Find(What:=sHeader, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
        SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Column
End Function