VBA Outlook 2016 - 动态控件重叠

VBA Outlook 2016 - Dynamic controls overlap

我正在尝试向用户窗体中的不同框架添加动态控件。我正在使用 Outlook 2016。

我希望它们在我拥有的每个用户的每一帧中按 3 行显示,然后在第一个用户的正下方显示另外 3 个,依此类推。 示例:

Frame1                   Frame2
Label1  Label2  Label3   Label1  Label2  Label3
-user1  -user1  -user1   -user1  -user1  -user1
-user2  -user2  -user2   -user2  -user2  -user2
...

我现在得到的是https://imgur.com/a/FWtshTt

以我的示例为例:

Frame1
Label1              Label2              Label3
-lastUserOfTheList -lastUserOfTheList -lastUserOfTheList

代码:

目前,我能够创建我的控件,但它们似乎都重叠,即使我正在设置它们的 Left 和 Top 属性。

我确实用这个设置了一个新控件:

Set opBtn = Me.Frame1.Controls.Add("Forms.OptionButton.1")

然后我通过调用另一个我给出一些参数的子来设置属性:

Call setControlProperties(userNumber, optionButtonCaption, opBtn, x)

此子包含:

With opBtn
    .Left = x * 36
    .Top = 18 + (userNumber * 18)
    .Caption = optionButtonCaption
    .Height = 36
    .Width = 48
    .ZOrder (0)
End With

x 是一个整型变量,我用它来递增 Left 属性,这样控件就不会重叠(但现在它们重叠了)。 userNumber 是我用来增加 Top 属性 的另一个整数变量。每个用户都有自己的"Top value"。 OpBtn 是一个 MSForms.Control 变量。

我确定我的框架足够宽以容纳动态控件。

问题: 我的问题如下:有谁知道尽管我将它们的 .Top 和 .Left 属性 设置为不同,但为什么这些控件会重叠?

PS : 这是我第一次 post 来这里所以我希望我没有忘记任何东西。

编辑 1 : 我将 setControlProperties 中包含的代码放在

之后
Set opBtn = Me.Frame1.Controls.Add("Forms.OptionButton.1")

如建议的那样,但它仍然重叠。暂无进展。

编辑 2 : 我将 属性 GroupName 添加到我的 opBtn 控件中,现在一些控件有点超出了重叠范围。我现在确定这是一个重叠,但我仍然不明白为什么。

编辑 3 : 我在执行过程中使用 watch window 和 f8(逐行)来观察我的 opBtn.Left 和 opBtn.Top 的值。两者总是正确递增。我还尝试修改每个 OptionButton 对象属性,但我总是得到相同的结果。

编辑 4 : 我添加了一个名称并强制控件可见,但这没有效果。

Set opBtn = Me.Frame1.Controls.Add("Forms.OptionButton.1", "dynamicButton" & x, True)

.Top = 18 + (userNumber * 18)

我的 userNumber 变量已重置为 1,因此 .top 属性 始终具有相同的值。问题已解决:)