Ms access Access VBA:此应用程序已请求运行时
运行VBA宏时,有时效果很好。但在某些情况下,我会得到以下错误 我已经调试了代码,但没有收到任何错误。代码如下Ms access Access VBA:此应用程序已请求运行时,ms-access,vba,Ms Access,Vba,运行VBA宏时,有时效果很好。但在某些情况下,我会得到以下错误 我已经调试了代码,但没有收到任何错误。代码如下 Public Sub Adjust_ComboBox() On Error GoTo Adjust_ComboBox_Err Dim mes As Form Set mes = [Form_Treatment Details] Dim count As Long On Error Resume Next For Each ctl In m
Public Sub Adjust_ComboBox()
On Error GoTo Adjust_ComboBox_Err
Dim mes As Form
Set mes = [Form_Treatment Details]
Dim count As Long
On Error Resume Next
For Each ctl In mes.Detail.Controls
If TypeName(ctl) = "ComboBox" Then
Dim comboitems() As Variant
count = 1
comboitems = ctl.Value
count = UBound(comboitems) + 1
ctl.Height = (300 * count)
Erase comboitems
End If
Next
Adjust_ComboBox_Exit:
Exit Sub
Adjust_ComboBox_Err:
MsgBox Error$
Resume Adjust_ComboBox_Exit
End Sub
怎么可能出现这个错误呢?我觉得这整段代码都很奇怪
Dim comboitems() As Variant
count = 1
comboitems = ctl.Value
count = UBound(comboitems) + 1
ctl.Height = (300 * count)
Erase comboitems
我的问题是:
- 为什么要在循环中减少和删除组合项
- 为什么要将数组设置为控件的值李>
- 是否尝试根据项目数设置高度李>
- 当它被覆盖两行时,为什么要设置
以后count=1
count = ctl.ListCount
if count > 0 then
ctl.Height = (300 * count)
else
ctl.Height = 300
end if
在错误恢复下一步
隐藏您可能收到的任何VBA错误消息-发生的一切是它试图执行一行,由于错误而无法执行,因此它将转到下一行,而下一行通常无法执行,因为前一行有错误等等-由于您告诉它不要显示的错误,您预期不会发生任何事情。在如何引用表单方面也很有帮助。除了Darren的注释外,您应该使用Set mes=form\u Treatment\u Details。您混合了两种对象命名方法,在将名称引用为具有空格的字符串(如“[Treatment Details]”)或类的子类(如Forms)时使用括号。[Treatment Details]VBA将空格替换为对象名称的u字符,并将表单u附加到表单的开头。在对象资源管理器中查找VBA使用的特定名称。