我正在Microsoft Access的VBA中构建我的第一个用户界面。如果我没有为此使用正确的语言/术语,请原谅我。我在尝试使.Left变量显示在下拉选择项(库?)中遇到一些困难。弹出的唯一东西是LeftPadding,我敢肯定这不是我所需要的。我问过一个一直在帮助我并且在VBA中领先我的朋友,但是他似乎无法回答为什么我无法声明矩形的“左”位置。这是我所指的屏幕截图。 Image
我的问题是,是否应该定义和使用另一种变量来声明矩形的位置?
如果执行正确,我的跟进问题是我有一个嵌套的If语句,似乎无法弄清楚。简而言之,基本上我要做的是计算一个新可见矩形的位置及其尺寸是否超过一个已经可见矩形的“左”位置,如果是,则将其放置在其他位置。这是我的无效代码:
Dim ctl As Control
For Each ctl In [Forms]![frmBuilder]
If Left(ctl.Name, 3) = "box" And Box1.Visible = True Then
If ctl.Visible = True Then
NextCaseNum = Int(Right(ctl.Name, (Len(ctl.Name)) - 3) + 1)
NextCasePosition = (ctl.lef + ctl.Width) + 1440 / 60
NextCaseName = "box" & NextCaseNum
Else
CurCaseLeft = ctl.Left
CurCaseWidth = ctl.Width
CurCaseHeight = ctl.Height
With ctl
.Top = UprightBottom - HInch
.Left = NextCasePosition
.Width = WInch
.Height = HInch
.Visible = True
End With
If CurCaseLeft + CurCaseWidth > Upright2.Left Then
With Beam1
.Top = (((5.5 + 6) * 60) + Box1.Top) / 1440
.Left = Upright1.Left
.Height = (5.5 * 60) / 1440
.Width = ((4 * 60) / 1440) + Upright2.Left - Upright1.Left
.Visible = True
End With
End If
我认为问题出在哪里,是CurCaseLeft和CurCaseWidth,因为由于当前框的ctl.Left没有显示,所以我不知道如何在函数中定义它们。我是否必须将嵌套的If语句分离到另一个函数中,然后从当前函数中调用该函数?对不起,如果这些是愚蠢的问题。我对此非常陌生。感谢您的帮助!
尝试更明确:
Dim ctl As Control
Dim rct As Rectangle
For Each ctl In [Forms]![frmBuilder]
If Left(ctl.Name, 3) = "box" And Box1.Visible = True Then
If ctl.Visible = True Then
Set rct = ctl
NextCaseNum = Int(Right(rct.Name, (Len(rct.Name)) - 3) + 1)
NextCasePosition = (rct.Left + rct.Width) + 1440 / 60