系统:Win7 Home Premium上的MS Office Pro Plus 2010
好的,这很烦人!应该这么简单。我在表单上有一个垂直滚动条。当表单保持打开状态时,滚动条会在表单下方滚动电子表格。电子表格中的某些行是隐藏的,需要保持隐藏状态。通常,当我单击滚动条UP上的小变化箭头时,它实际上会将表单向下移动。小的变化值是1.
我尝试过:我添加了代码,这样如果目标行是隐藏行,我会继续减去直到找到可见行。这并没有解决问题。
我还尝试使用1个按钮和一个只包含滚动条和下面代码简化版本的表单创建一个空白的Excel。遇到了同样的问题。
P.S。使用DOWN(小变化)ARROW时,我遇到了完全相同的问题。
' This is in the form Initialize routine
With Me.sbRows
.Min = 1
.Max = lFindNewRow(m_wksPST)
.Value = ActiveWindow.ScrollRow
.LargeChange = 25
.SmallChange = 1
End With
' This is the vertical scrollbar change routine
Private Sub sbRows_Change()
' If target row is hidden, keep looking until we find a visible row to use as the target.
Dim lDiff As Long
With Me.sbRows
lDiff = .Value - mlPrevScrollRow ' Stores the top row before scrollbar was clicked
Debug.Print "Prev " & mlPrevScrollRow & " New " & .Value & " diff " & lDiff
mlPrevScrollRow = .Value
While m_wksPST.Rows(mlPrevScrollRow).Hidden And mlPrevScrollRow > 0 And _
mlPrevScrollRow < 65500
If lDiff < 0 Then
mlPrevScrollRow = mlPrevScrollRow - 1
Else
mlPrevScrollRow = mlPrevScrollRow + 1
End If
Wend
End With
ActiveWindow.ScrollRow = mlPrevScrollRow
Debug.Print "Move to " & mlPrevScrollRow
End Sub
*仅点击向上(小变化)箭头*
时的输出示例Prev 884 New 883 diff -1'好。向上滚动1到隐藏的行,查找上面的可见行。
转到880'好。
Prev 880 New 882 diff 2'Bad。它在哪里得到882而不是879?
转到884
Prev 884 New 881 diff -3'Bad。为什么-3不是-1?为什么新的881不是883?
转到880
Prev 880 New 880 diff 0
转到880
Prev 880 New 879 diff -1
转到876
Prev 876 New 878 diff 2
转到880
*此范围内的可见行**
874个
876个
880个
884个
885个
886
希望你能帮忙!
答案 0 :(得分:1)
您在初始化例程中有With me.sbRows
... .Value = ActiveWindow.ScrollRow
,但sbRows_Change
例程中没有等效语句。
正确的行存储在mlPrevScrollRow
中,用于更新ActiveWindow.ScrollRow
。行号从不用于更新sbRows.Value
,因此它与实际滚动行