Excel 使用锁定时的表单列表框问题 属性

Excel form listbox issue when using locked property

我对列表框在 Excel 表单上的行为方式有疑问。重现问题的步骤:

首次显示表单时,我可以使用箭头键和翻页键正常浏览列表框。但是,在触发双击事件后,所有键盘导航都无效,包括切换到其他控件(如果它们在窗体上)。单击列表框似乎确实有效,焦点轮廓显示正确,但在列表框锁定然后解锁后处理焦点的方式有问题。怎么回事?

使用 Office 2013 32 位版本。

我测试过的 2 个解决方案允许您使用箭头键进行导航。

  1. 鉴于没有单击事件处理程序,尝试在 DblClick 之后调用单击事件(一直有效):

    Private Sub ListBox1_Click()
        Debug.Print "ListBox1_Click()"
    End Sub
    
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        Debug.Print "ListBox1_DblClick()"
        With Me.ListBox1
            .Locked = True
            .Locked = False
        End With
        ListBox1_Click
    End Sub
    
    Private Sub UserForm_Initialize()
        Dim i As Integer
        For i = 1 To 10
            Me.ListBox1.AddItem i
        Next i
    End Sub
    
  2. 在 DblClick 的末尾设置 Cancel = False。 (有时不起作用!)

    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        Debug.Print "ListBox1_DblClick()"
        With Me.ListBox1
            .Locked = True
            .Locked = False
        End With
        Cancel = False
    End Sub
    
    Private Sub UserForm_Initialize()
        Dim i As Integer
        For i = 1 To 10
            Me.ListBox1.AddItem i
        Next i
    End Sub
    

我设法重现了这个问题,并在锁定和解锁列表框之前将焦点设置在其他地方对我有用:

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
     Me.TextBox1.SetFocus 'or some other control.
     Me.ListBox1.Locked = True
     Me.ListBox1.Locked = False
     Me.ListBox1.SetFocus
End Sub

更改列表框的 sheet 中的缩放比例对我有用。

Private Sub Worksheet_Activate()
Dim temp As Double
Application.ScreenUpdating = False
'Change worksheet zoom setting for the active window
temp = ActiveWindow.Zoom
ActiveWindow.Zoom = temp + 10
ActiveWindow.Zoom = temp
Application.ScreenUpdating = True
End Sub