У меня есть форма формы Excel VBA, где я пытаюсь добавить несколько флажков в соответствии с количеством элементов в данном словаре.VBA dynamic checkboxes positioning
Это работает, но каждый из моих флажков добавляется в верхний левый угол друг над другом. Как я могу разместить их так, чтобы новейший был сразу ниже предыдущего?
Вот мой соответствующий код:
With CreateObject("Scripting.Dictionary")
'Variable Checkboxes
Dim i As Long
Dim chkBox As MSForms.CheckBox
For i = 1 To .count - 1
Set chkBox = Me.Controls.Add("Forms.Checkbox.1", "Checkbox" & i)
chkBox.Caption = .Keys()(i)
chkBox.VALUE = False
Next i
Спасибо! Я видел ссылки на Топ и налево и был смущен, почему у меня их не было. Я буду отмечать ваш ответ как правильно! – ale10ander
На самом деле, используя этот код, я получаю несоответствие типа в строке Set chkbox. Я предполагаю, что это потому, что я добавляю Forms.Checkbox.1. Есть ли альтернативный ProgID для другого типа? – ale10ander
Флажок является членом MSForms. Но дает разные варианты в зависимости от того, как он называется. Разочарование вещи в VBA, как это бывает иногда. если вы используете Dim chkBox As MSFOrms.Checkbox, он, как представляется, принимает метод .Top, даже если он не отображается в контекстном прокрутке вниз. Вам также может потребоваться включить chkBox.Visible = True, чтобы он отображался в форме. Дайте мне знать, если это решит. –