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

현재 표시된 사이트를 유지하기위한 정적 변수는 무엇입니까? –

답변

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 번째 값으로 업데이트되도록 코드를 수정해야합니다. 반대로 액티브 셀이 범위의 5 번째와 같으면 별도의 단추가 ActiveCell을 범위의 4 번째로 변경하도록 역방향 옵션을 만들려고합니다. HTH :) – CatParky