2013-10-21 86 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