发布网友 发布时间:2022-04-22 08:52
共1个回答
热心网友 时间:2023-05-18 06:21
你意思是,先从V到Y再到AA,这样向右跳,然后再从AA到Y再到V,这样向左跳吗?
假如当前已经跳到Y了,那么下次点击时,是要跳到AA,还是要跳到V,这里就有点混乱了。
但没有过不去的火焰山,凡事都有解决方法。
可以声明一个模块级变量,作为方向的标记。
Dim ifx$ '声明一个模块级变量作为左右移动方向的标记
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address(0, 0) = "B43" Then
Range("A43").Select '移开选中框, 方便下次点击B43
If ifx = "" Then ifx = "向右" '如果方向标记为空,那么赋值为向右
With ActiveWindow 'With模块,可以简短化下边的代码
If ifx = "向右" Then
Select Case .ScrollColumn '使用Select语句判断.ScrollColumn的值
Case Columns("V").Column '如果值为V的列序号
.ScrollColumn = Columns("Y").Column '那么赋值为Y的列序号
Case Columns("Y").Column '如果值为Y的列序号
.ScrollColumn = Columns("AA").Column '那么赋值为AA的列序号
ifx = "向左" 'AA列已经到达最右端,此时更改方向标记为向左
Case Else
.ScrollColumn = Columns("V").Column '否则赋值为V的列序号
End Select
ElseIf ifx = "向左" Then
Select Case .ScrollColumn '使用Select语句判断.ScrollColumn的值
Case Columns("AA").Column '如果值为AA的列序号
.ScrollColumn = Columns("Y").Column '那么赋值为Y的列序号
Case Columns("Y").Column '如果值为Y的列序号
.ScrollColumn = Columns("V").Column '那么赋值为V的列序号
ifx = "向右" 'V列已经到达最左端,此时更改方向标记为向右
Case Else
.ScrollColumn = Columns("AA").Column '否则赋值为AA的列序号
End Select
End If
End With
End If
End Sub
来自:求助得到的回答