Используя VBA, как заполнить значения ComboBox на основе конкретного столбца в таблице Excel - PullRequest
1 голос
/ 11 октября 2011

Используя VBA, я пытаюсь создать эту сложную форму для добавления новых строк в существующую таблицу.Я хочу иметь этот ComboBox, в котором будут перечислены значения, уже существующие в одном из столбцов таблицы.

Я новичок в VBA.и я попробовал несколько комбинаций Range / Selection и sort без каких-либо недостатков ...

Ответы [ 2 ]

2 голосов
/ 11 октября 2011

Вот то, что вы ищете .. Это должно помочь вам начать, просто адаптируйте листы и ассортимент для ваших нужд.

  Dim cmb as ComboBox
  Dim rng as Range

  Set cmb = Worksheets("Sheet1").ComboBox1

  'To fill based on range
  For Each rng in Worksheets("Sheet2").Range("C2:C300")
  Cmb.AddItem Rng.Value
  Next

  'To fill from table where ListColumns(N) is the specific column
  Set rng = Sheet2.ListObject(1).ListColumns(3).Range
  For Each rng in rng
  Cmb.AddItem Rng.Value
  Next

  Cmb.ListIndex = 0

* РЕДАКТИРОВАНИЕ: * Крис прав, в моем исходном коде были ошибки. Выложенный ответ по дороге на работу не успел проверить. Код выше работает нормально. Предложение Криса об использовании .value для заполнения быстрее. Я, честно говоря, не знал, что ты можешь сделать это так.

0 голосов
/ 25 сентября 2013

вам нужно создать диапазон столбцов таблицы,
Либо вы можете вставить свой ряд в сторону диапазона
Или вам нужно сначала добавить строку в таблицу и изменить размер вашего диапазона
и передать этот диапазон передать параметру SetRng,
userFormName - это имя пользователя,
ControlName - имя комбобокса

Public Function FillRangeComboBox(userFormName As String, ControlName As String, SetRng As Range) As Boolean
    Dim ObjFormName As Object: Set ObjFormName = ThisWorkbook.VBProject.VBComponents(userFormName)
    Dim ObjControlName As MSForms.ComboBox: Set ObjControlName = ObjFormName.Designer.Controls(ControlName)

    ''set combobox value
    With ObjControlName
         .RowSource = SetRng.Address

    End With

End Function    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...