当我尝试阅读控件的"Left property"
时,它会给我错误,
"Left cannot be read at run time"
这是我的代码,
for each ctrl in me.controls
if ctrl.left > 2490 then
'app logic
end if
next
此代码有什么问题。它在另一台计算机上没有错误。 任何人都可以告诉我有什么问题
答案 0 :(得分:5)
您的表单上可能只有一个设计时可放置的控件,例如timer
,它没有运行时左属性。您可以检查控件类型,以确保只检查TextBox
,Label
,Button
等,或者只使用on error resume next
:
使用TypeOf
检查对象类型:
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeOf ctrl Is Timer Then
Else
If ctrl.Left > 2490 Then
'app logic
End If
End If
Next
使用TypeName
检查对象类型:
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "Timer" Then
Else
If ctrl.Left > 2490 Then
'app logic
End If
End If
Next
使用On Error Resume Next
:
Dim ctrl As Control
On Error Resume Next
for each ctrl in me.controls
if ctrl.left > 2490 then
'app logic
end if
Next
答案 1 :(得分:1)
如果您使用最后一种方法,处理错误内联重新添加任何意外错误非常重要。否则,如果您得到的错误与您预期的不同,则可能很难找到它。所以:
Dim ctrl As Control
On Error Resume Next
for each ctrl in me.controls
if ctrl.left > 2490 then
Select Case Err.Number
Case 0 'No Error, ignore
Case 393 'The error you want to ignore
Err.Clear 'Reset for next iteration
Case Else
On Error Goto 0
Err.Raise Err.Number 'Reraise any unexpected errors
End Select
'app logic
end if
Next
On Error Goto 0