从控制开始,而不是中间

时间:2014-08-15 11:36:35

标签: ms-access access-vba

将遮罩应用于控件时......

Me.item_name.InputMask = ">!CCCCCCCCCCCCCCCCCCC"

并且用户在该控件中单击光标是他们单击的位置,而不是在开头。

Me.item_name.SelStart = 0

解决了这个问题。我试图通过所有控件循环。

For Each ctl In Me.Controls
ctl.SelStart = 0
Next ctl

呀......没有工作。

我也试过......

For Each Ctl In Me.Controls
    Select Case Ctl.ControlType
      Case acTextBox
          Debug.Print Ctl.Name
          Ctl.SelStart = 0
      Case Else
    'nothing to do
    End Select
Next

在Ctl.SelStart = 0

上获取运行时错误2185

2 个答案:

答案 0 :(得分:2)

对于没有.SelStart属性的任何控件(例如CommandButtons),这将失败。

控件的.Properties集合会告诉您它是否具有.SelStart属性,即

Sub ResetControls(f As Form)

    Dim c As Control
    For Each c In f.Controls

        Dim p As Property
        For Each p In c.Properties

            If p.Name = "SelStart" Then
                c.SelStart = 0
            End If

        Next p

    Next c

End Sub

答案 1 :(得分:0)

您还可以使用文本控件的OnGotFocus事件(当用户单击或标记到控件中时发生),并在其中设置SelStart。缺点是您需要为每个控件编写事件,因此您无法在循环中执行此操作。优点是它非常简单,如果需要,您可以为特定控件添加其他功能(例如从另一个控件的内容更新)。