运行时错误 2185

Posted

技术标签:

【中文标题】运行时错误 2185【英文标题】:Run time error 2185 【发布时间】:2013-12-20 12:17:38 【问题描述】:

我收到run time error 2185“除非控件具有焦点,否则您不能引用控件的属性或方法...”

这是我正在使用的代码。

Private Sub Command5_Click()
    Dim cardno As Integer
    cardno = cardnumber.Text
    DoCmd.OpenForm "search_card_number", acNormal, , WHERE & cardno = [Account Number]
End Sub

【问题讨论】:

【参考方案1】:

引用控件的.Text 属性要求它具有焦点。 只需删除它,它应该可以工作(默认为.Value

尝试按照 Access 的建议放入 SetFocus 方法,即

  Private Sub Command5_Click()
    Dim cardno As Integer

     cardnumber.SetFocus   <-------Use this line to set the focus        

    cardno = cardnumber.Text
  DoCmd.OpenForm "search_card_number", acNormal, , WHERE & cardno = [Account Number]
 End Sub

【讨论】:

我得到一个运行时错误 6,溢出。但 carnumber.text 确实得到了我在文本框中输入的值 我猜数据不能再被整数保存了。尝试将行 Dim cardno As Integer 更改为 Dim cardno As Long 应该可以解决眼前的问题。 我收到 2465 运行时错误,并以黄色突出显示 Docmd 部分。【参考方案2】:

那个运行时错误意味着You can't reference a property or method for a control unless the control has the focus.

当控件获得焦点时,您可以使用.Text

【讨论】:

如果我将文本更改为文本框,我会得到一个未找到的数据和方法成员 使用cardno = cardnumber 而不是cardno = cardnumber.Text【参考方案3】:

我的解决方案是在更新控件属性之前测试控件是否有焦点,

这里我将组合框搜索更新为通配符搜索

Private Sub Combo_Change()
    'Note control passed to after update sub, then returns to change sub where error occurs
    'Combo is the name of your combo box

    If (Combo Is Me.ActiveControl) Then
        Me.Combo.RowSource = _
            "SELECT [CCL sites v Contract No].ContractID, [CCL Sites].[Site Address], [CCL sites v Contract No].[Contract No] " & _
            "FROM [CCL sites v Contract No] INNER JOIN [CCL Sites] ON [CCL sites v Contract No].SiteID = [CCL Sites].SiteID " & _
            "WHERE [CCL Sites].[Site Address] LIKE '*" & Me.Combo.Text & "*' " & _
            "ORDER BY [CCL Sites].[Site Address]"

        Me.Combo.Dropdown

    End If

End Sub

【讨论】:

以上是关于运行时错误 2185的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET运行时错误

如图写了批处理文件,可是点击运行的时候,提示:请键入NET HELPMSG 2185以获得更多帮助

运行Loadrunner脚本时,运行错误,提示如下:(见补充) 求高手怎么解决

JSP运行时505错误,麻烦帮我改好

运行项目时这个运行时错误是什么?

excel vba 运行时错误