【问题标题】:Finding the next value in a range查找范围内的下一个值
【发布时间】:2013-10-21 12:35:07
【问题描述】:

我希望用户激活“下一个站点”按钮,该按钮可将单元格的值推进到另一个工作表中定义的单元格范围。每次按下按钮时,它应该返回范围内下一项的值

到目前为止我有:

Sub NextSite()
 Set EXCEPTION = Sheets("EXCEPTION")
 Set CONTROL = Sheets("CONTROL")
 Dim rCell As Range
 Dim rRng As Range

 CurrentVal = EXCEPTION.Range("B16")

 Set rRng = CONTROL.Range("B9:B72")

 For Each rCell In rRng.Cells
    If CurrentVal = rCell.Value Then
        GoTo NextCell
        Else
        ActiveCell.Formula = CONTROL.Range(rCell.Address)
        Exit For
    End If
NextCell:
Next rCell

End Sub

虽然我认为我在这里有了一个想法的开始,但我无法完全了解整个范围的工作流程。

如果有人可以为此提供建议,我还希望有一个单独的代码来查找列表中的上一个站点。

【问题讨论】:

  • 参见THIS 尤其是第 3 节
  • 一个静态变量来保存当前显示的站点?

标签: vba excel


【解决方案1】:

有趣的问题..在这个例子中,我们希望从一个名为 rLook 的范围中按顺序进行采样。该范围是一组不相交的单元格(最坏的情况),但宏将适用于任何范围。我们使用静态变量来采样索引:

Dim Kounter As Long
Sub sequentialSamples()
    Dim rLook As Range, r As Range
    Set rLook = Sheets("Sheet2").Range("A1,B9,C13,F1,J66")
    If Kounter = 0 Or Kounter > rLook.Count Then
        Kounter = 1
    End If
    j = 0
    For Each r In rLook
        j = j + 1
        If j = Kounter Then
            MsgBox Kounter & vbCrLf & r.Address & vbCrLf & r.Value
            Kounter = Kounter + 1
            Exit Sub
        End If
    Next r
End Sub

【讨论】:

  • 感谢您的快速回复,但是在测试中我发现它每次只返回 rLook 范围内的第一个值。在上述有缺陷的尝试中,我将 ActiveCell 中当前站点的名称捕获为 CurrentValue,这可能显示为该范围内的第 5 个。我需要修改代码,以便当用户按下按钮时 ActiveCell 更新为第 6 个值。相反,我将寻求创建一个反向选项,以便如果 ActiveCell 与范围中的第 5 个相同,则单独的按钮会将 ActiveCell 更改为范围中的第 4 个。 HTH :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多