2013-10-21 85 views
0

我正在寻找一个用户激活的“下一个站点”按钮,该按钮可以通过另一个工作表定义的单元格范围来提高单元格的值。每次按下按钮,它应该在的范围内返回的下一个项目的价值查找范围中的下一个值

到目前为止,我有:

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 

虽然我觉得我有一个想法开始在这里我不能完全得到在范围内工作的流程。

我还想要一个单独的代码,如果任何人都可以为此提供建议,就会在列表中找到以前的网站。

+1

见[此](http://www.siddharthrout.com/2011/07/14/find-and-findnext-in-excel-vba/)特别是第3节 –

+0

一个静态变量来保存当前显示的网站? – 2013-10-21 13:14:57

回答

0

有趣的问题..在这个例子中,我们想从一个范围内连续采样,称为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 
+0

感谢您的快速回复,但是在测试中我发现它每次都会返回rLook范围中的第一个值。 在我上面有缺陷的尝试中,我已经捕获ActiveCell中当前网站的名称作为CurrentValue,并且这可能会显示为范围中的第5个。我需要修改代码,以便当用户按下按钮时,ActiveCell更新为第6个值。 反过来,我将创建一个反向选项,以便如果ActiveCell与范围中的第5个相同,那么单独的按钮会将ActiveCell更改为范围中的第4个。 HTH :) – CatParky