VBAdynamiccheckbox定位

我有一个Excel VBA用户表单,我试图根据给定字典中的项目数来添加一些checkbox。

这个工作,但我的每个checkbox被添加到左上angular,在彼此的顶部。 我怎样才能把它们放在最前面?

这是我的相关代码:

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 

我认为一个问题是你如何分配checkbox。 尝试使用checkbox,而不是MSForms.Checkbox。 可能会出现更多的选项,包括Top选项:

 With CreateObject("Scripting.Dictionary") 'Variable Checkboxes Dim i As Long Dim chkBox As CheckBox For i = 1 To .Count - 1 Set chkBox = Me.Controls.Add("Forms.Checkbox.1", "Checkbox" & i) chkBox.Caption = .Keys()(i) chkBox.Value = False chkBox.Top = ...enter top location here... Next i End Sub 

您可以使用LeftTop属性来操纵相对于其容器的位置。

所以在这种情况下,要将它们堆叠在一起,可以这样做:

 Const Spacing As Integer = 8 ' Gap between controls. For i = 1 To .count - 1 Set chkBox = Me.Controls.Add("Forms.Checkbox.1", "Checkbox" & i) ' Position the new checkbox. ' This assumes all will be the same size. chkBox.Top = (chkBox.Height + Spacing) * (i - 1) ... Next 

你可能会想玩这个,但这应该让你开始。