VBA Outlook 2016-动态控件重叠
我正在尝试向UserForm中的不同帧添加动态控件。我正在研究2016年展望 我希望它们在我为每个用户提供的每一帧中按3行显示,然后在第一帧的正下方显示其他3行,以此类推。 例如: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
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它仍然重叠,没有改变