如何在vba中停止滚动条自动跳转

问题描述 投票:0回答:5

我有一个带有框架(Frame1)的用户窗体,该框架由高度设置为 1000 的垂直滚动条组成,该框架包含 160 个文本框,排列为 40 行和 4 列。 第一列上的 40 个文本框每个都有一个列表框。 问题是当我双击列表框以选择文本框中的项目时,滚动条会自行向下或向上跳跃。这对于用户来说可能非常令人沮丧。请我需要一些有关如何在双击框架中的列表框时保持滚动条静态的帮助。 子列表框1_Dbclick() textbox1.Value = Me.listbox.text 结束子

excel vba
5个回答
0
投票

您可以更改滚动条的属性并检查。

这可能是属性设置的问题。 Bcz 我从来没有遇到过这种错误。

请先分享您的代码,然后论坛可以更好地帮助您。


0
投票

经过一番研究,发现这个方法可以修复Excel bug

    Private Sub MainFrame_Scroll(ByVal ActionX As MSForms.fmScrollAction, ByVal ActionY As MSForms.fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)
'    Stop
'    Debug.Print ActionX
'    Debug.Print ActionY
'    Debug.Print RequestDx
'    Debug.Print RequestDy
'    Debug.Print ActualDx
'    Debug.Print ActualDy
    If RequestDy = 299.45 Then
'        Stop
        ActualDy = 0
    End If

End Sub

当 VBA 使滚动条跳转时,RequestDy 属性具有特定值(在我的例子中为 299.45,由注释的 Debug.Print 命令评估)
在这种情况下,我已使用 ActualDy = 0 命令取消跳转


0
投票

我遇到了同样的问题,虽然我无法确定选择框架时向下滚动的确切原因,但我确实有一个解决方案。它基于 @vova 提供的解决方案,但是该解决方案仅在框架高度固定(例如 299.45)而不是动态的情况下才有效,而下面的解决方案应该适用于任何框架高度。

Private Frame1_Opened As Boolean

Private Sub Frame1_Scroll(ByVal ActionX As MSForms.fmScrollAction, ByVal ActionY As MSForms.fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)
If Frame1_Opened = False Then
    ActualDy = 0
    Frame1_Opened = True
End If
End Sub

0
投票

我遇到了这个问题,这是由于将其设置为

.TopIndex = 0

我注释掉了代码,问题就消失了。

Private Sub lstMyListBox_Click()
    lstMyListBox.TopIndex = 0
End Sub

0
投票

@Peter 的回答非常好。非常感谢。

© www.soinside.com 2019 - 2024. All rights reserved.