2012-06-19 4 views
0

일부 VBA 학습. 첫 번째 반복에서개체 변수 또는 변수가 설정되지 않음

  1. "M" & i 셀에 번호를 가져옵니다 (가 M5됩니다 : 지금까지, 나는 다음과 같은 일을 할 수있는 (아직하지 않습니다하지만) 나에게 허용해야이 코드 조각을 구축했습니다).
  2. A 열에서 해당 번호를 찾으십시오.
  3. 일단 발견되면 PutHereIfFound의 값을 F6의 값 (따라서 오프셋)과 같게 설정하십시오.
  4. 숫자가 발견되면 루프가 M6, M7, ...을 셀 M20까지 계속 찾기 위해 i를 증가시킵니다.

을 나타내는 Run-Time Error 91을 반환합니다. 내가 디버그 할 때, 그것은 Set PuthereIfFound 라인을 가리킨다.

이 실수의 이유는 무엇입니까?

Sub FindThis() 
    Dim FindThis As Range 
    Dim PutHereIfFound As Range 
    Dim i As Integer 
    Dim f As Integer 

    i = 5 
    f = 5 
    Do 
     Set FindThis = ActiveSheet.Range("M" & i) 
     Set PutHereIfFound = ActiveSheet.Range("N" & i) 
      With ActiveSheet.Range("A:A") 
       Set PutHereIfFound = .Find(What:=FindThis, _ 
           After:=.Cells(.Cells.Count), _ 
           LookIn:=xlValues, _ 
           LookAt:=xlWhole, _ 
           SearchOrder:=xlByRows, _ 
           SearchDirection:=xlNext, _ 
           MatchCase:=False).Offset(0, 5) 

       If Not PutHereIfFound Is Nothing Then 
        i = i + 1 
       Else 
        i = i      
       End If          
      End With 
    Loop While i <= 20 
End Sub 
+0

더 좋은 방법이있을 것입니다. 일단'F'에서 값을 얻으면, 당신은 무엇을하고 싶습니까? –

+0

루프를 첫 번째 반복에서 N5 인 PutHereIfFound에 입력하십시오. – speci

+1

그렇다면 일치하는 항목이 발견되면 COL N 값을 Col F 값으로 채우고 싶습니까? –

답변

0

내 의견에 더해서 코드를 이와 같이 최적화 할 수 있습니다. Object Variable or With Variable Not Set 오류에 대한 질문에 대한 대답에서

Sub FindThis() 
    Dim ws As Worksheet 
    Dim FindThis As String 
    Dim aCell As Range 
    Dim i As Long 

    Set ws = Sheets("Sheet1") 

    With ws 
     For i = 5 To 20 
      FindThis = .Range("M" & i).Value 

      Set aCell = .Columns(1).Find(What:=FindThis, LookIn:=xlValues, _ 
      LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
      MatchCase:=False, SearchFormat:=False) 

      If Not aCell Is Nothing Then 
       '~~> Do whatever you want here with the F Value 
       PutHereIfFound = aCell.Offset(, 5).Value 

       Debug.Print PutHereIfFound 
      End If 
     Next i 
    End With 
End Sub 
0

, 그것은 FindThis가 발견되지 않았 음을 의미하고, FindNothing를 반환했습니다.

관련 문제