SetFocus被忽略了 - 为什么?

时间:2014-10-06 21:39:14

标签: vba combobox setfocus

我有两个字段--txtTR1_Unit和cmbTR2_Unit。这两个字段共同代表了整个UNIT。 cmbTR2_Unit有一个唯一值列表,选中后 - txtTR1_Unit会自动获取相关值。

我创建了一个名为Tier1from2的函数 - 它接受一个'string'并返回相关的Tier1值。

因此,当我在After_Update事件中更新cmbTR2_Unit时,我想自动切换到下一个字段。 - 另一个组合框。我认为我不需要设置任何焦点,因为它会在更新后自动转到下一个字段。

txtTR1正如我所希望的那样从我的函数更新,但它只是坐在那里而不会进入下一个字段。所以我在更新后试图将'SetFocus'设置到下一个字段。

仍然没有去。我错过了什么?

 Private Sub cmbTR2_UNIT_AfterUpdate()
        If Len(Me.cmbTR2_UNIT.Value) <> 0 Then
         Me.txtTR1_UNIT.Value = Tier1From2(Me.cmbTR2_UNIT.Text)
        'cmb_CostCenter.setfocus  - 'this doesn't seem necessary - but it doesn't work anyway.

        End If

    End Sub

作为测试,我尝试删除函数“Tier1From2(Me.cmbTR2_UNIT.text)”,只需在txtTR1_UNIT中对“RESULT”一词进行硬编码,它就可以正常工作。我知道我曾经写过一个更简单的函数,但我有一段时间没有接触过VBA - 我该如何简化这个函数:

Private Function Tier1From2(strTier2 As String) As String

    Dim qdf As DAO.QueryDef
    Dim db As DAO.Database
    Dim strQry As String
    Dim rs As Recordset

    Set db = CurrentDb
    Set qdf = db.QueryDefs("qUNIT_HUB")

    strQry = "SELECT Tier1_Unit, Tier2_Unit " & _
    " FROM LTBL_Cost_Collector " & _
    " GROUP BY Tier1_Unit, Tier2_Unit " & _
    " HAVING (((Tier2_Unit) = '" & strTier2 & "'));"


    qdf.SQL = strQry
    db.QueryDefs.Refresh

    Set rs = db.OpenRecordset(strQry)


    Tier1From2 = rs![Tier1_Unit]

    Set db = Nothing
    Set qdf = Nothing
    Set Recordset = Nothing


End Function

1 个答案:

答案 0 :(得分:0)

事实证明,此函数中的某些内容导致字段和表单松散焦点。 db.QueryDefs.refresh也许?解决方案是更新我的功能如下

Private Function Tier1From2(strTier2 As String) As String
    Dim rs As DAO.Recordset
    Dim db As DAO.Database
    Dim strSQL As String
    Dim strTier1 As String

    Set db = CurrentDb

    strSQL = "SELECT Tier1_Unit, Tier2_Unit " & _
    " FROM LTBL_Cost_Collector " & _
    " GROUP BY Tier1_Unit, Tier2_Unit " & _
    " HAVING (((Tier2_Unit) = '" & strTier2 & "'));"

    Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

    strTier1 = rs!Tier1_Unit

      Set rs = Nothing
      Set db = Nothing

    Tier1From2 = strTier1
End Function

这没有任何障碍。