none
ListBox控件在冻结窗格时不能激活等有关问题 RRS feed

  • 问题

  •     在VBA 中,ListBox控件在冻结窗格时不能激活是一个存在已久的问题,这个问题表现为不论用Select方法还是active方法都无法激活listbox控件。此时在上述代码之后加入代码

        Application.ScreenUpdating = False '原用于处理listbox无法激活的问题

        ActiveWindow.SmallScroll down:=1 '原用于处理listbox无法激活的问题

        ActiveWindow.SmallScroll up:=1 '原用于处理listbox无法激活的问题

        Application.ScreenUpdating = True '原用于处理listbox无法激活的问题

    listbox控件才能够进行正常操作。

        接下来出现了相关问题:本希望在ListBox1_KeyDown事件中,用按下回车键或空格键把ListBox1的值输入活动单元格,然后隐藏ListBox1;但此时出现了按下空格键,执行“ListBox1.Visible = False”语句时Excel崩溃,而按下回车键执行上述操作则能够正常执行。有关测试代码如下:

    Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        Select Case KeyCode
            Case Is = 13  '回车键输入到单元格
                With Me
                    ActiveCell.Value = .ListBox1.Text
                    .ListBox1.Visible = False '能够正常执行
                End With
                ActiveCell.Activate
            Case Is = 32  '按空格键输入到单元格
                With Me
                    'ActiveCell.Value = .ListBox1.Text
                    .ListBox1.Visible = False ' 若执行到此语句就崩溃
                End With
                ActiveCell.Activate
        End Select
    End Sub

    在上述测试代码前面如果加上如下代码

    Application.ScreenUpdating = False '原用于处理listbox无法激活的问题

    ActiveWindow.SmallScroll down:=1 '原用于处理listbox无法激活的问题

    ActiveWindow.SmallScroll up:=1 '原用于处理listbox无法激活的问题

    Application.ScreenUpdating = True '原用于处理listbox无法激活的问题

    则可以解决崩溃的问题,但是如果把上述所有这些测试代码放入模块中则崩溃的问题又再出现,至今没有什么办法能够解决上述有关问题。

    通过上述现象初步判断:或VBE或office存在bug,这个bug与空格键有某种关联。



    2018年1月10日 6:47

全部回复

  • 你好:

    这个论坛主要讨论visual studio的问题,我会将你的帖子移到 综合讨论区 >一般性问题讨论区 去获得关于VBA的支持,谢谢理解。


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年1月11日 6:34