VBA Outlook 2016-动态控件重叠

VBA Outlook 2016-动态控件重叠,vba,controls,outlook-2016,Vba,Controls,Outlook 2016,我正在尝试向UserForm中的不同帧添加动态控件。我正在研究2016年展望 我希望它们在我为每个用户提供的每一帧中按3行显示,然后在第一帧的正下方显示其他3行,以此类推。 例如: Frame1 Frame2 Label1 Label2 Label3 Label1 Label2 Label3 -user1 -user1 -user1 -user1 -user1 -user1 -user2 -user2 -user2 -user2

我正在尝试向UserForm中的不同帧添加动态控件。我正在研究2016年展望

我希望它们在我为每个用户提供的每一帧中按3行显示,然后在第一帧的正下方显示其他3行,以此类推。 例如:

Frame1                   Frame2
Label1  Label2  Label3   Label1  Label2  Label3
-user1  -user1  -user1   -user1  -user1  -user1
-user2  -user2  -user2   -user2  -user2  -user2
...
我现在得到的是

在我的示例中,这将如下所示:

Frame1
Label1              Label2              Label3
-lastUserOfTheList -lastUserOfTheList -lastUserOfTheList
代码:

目前,我可以创建控件,但它们似乎都重叠,即使我正在设置它们的左属性和上属性

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

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属性的另一个整数变量。每个用户都有自己的“最高价值”
OpBtn
是一个MSForms.Control变量

我确信我的框架足够宽,可以承载动态控件

问题: 我的问题是:有人知道为什么这些控件重叠,尽管我将它们的.Top和.Left属性设置为不同的吗

这是我在这里的第一篇文章,所以我希望我没有忘记任何事情

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

Set opBtn = Me.Frame1.Controls.Add("Forms.OptionButton.1")
正如建议的那样,但它仍然重叠。目前没有进一步的进展

编辑2: 我在opBtn控件中添加了属性GroupName,现在有些控件超出了重叠部分。我现在肯定这是一个重叠,但我仍然不明白为什么

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

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

Set opBtn = Me.Frame1.Controls.Add("Forms.OptionButton.1", "dynamicButton" & x, True)
.Top=18+(用户编号*18)


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

欢迎使用堆栈溢出!也许屏幕截图有助于传达您的问题,包括图像上关于所需结果的注释(在循环的多次迭代中)。或者,可以帮助您找到问题的方法是逐步检查您的代码,看看哪些计算是错误的。(更多信息)我不能添加图片,因为我是新手,没有声誉。这是一个屏幕截图(),现在开始阅读您的链接。感谢在调用
setControlProperties
的地方插入代码。@MaciejLos它仍然重叠,没有改变