2013-08-07 5 views
0

누군가 내가 제발 나를 도울 수 있는지 궁금해.VBA 복사 IF 값이 같음

첫 번째로 나는 처음으로이 단계를 얻는 데 도움을 받았지만 아래 코드로 문제를 해결할 수 있을지 확신 할 수 없습니다.

내가 할 노력하고있어

, 코드 셀 E3에서 시작 시트 "ALLDATA"(출처) 시트에 프로젝트의 목록을 검토 검사를 수행하는 것입니다 :

는 약간의 배경을 부여하려면 , "Enhancements"텍스트 값이 포함 된 셀을 복사하여이를 "Enhancements"(대상) 시트에 붙여 넣습니다.

또한 코드는 대상 프로젝트 (향상 시트)의 각 셀에 프로젝트 별 및 기간별로 각 프로젝트 및 총 작업 시간과 관련된 '실제'인력 수치와 날짜를 사용합니다. 이들은 "RVal"및 "RDate"변수입니다.

개정 코드 - 전체 작업 스크립트 내가 이것을 실행하려고하면

Sub Extract() 
    Dim i As Long, j As Long, m As Long 
    Dim strProject As String 
    Dim RDate As Date 
    Dim RVal As Single 
    Dim BlnProjExists As Boolean 
    With Sheets("Enhancements").Range("B3") 
    For i = 1 To .CurrentRegion.Rows.Count - 1 
     For j = 0 To 13 
      .Offset(i, j) = "" 
     Next j 
    Next i 
End With 
With Sheets("AllData").Range("E3") 
    For i = 1 To .CurrentRegion.Rows.Count - 1 
    strProject = .Offset(i, 0) 
    If InStr(strProject, "Enhancements") = 0 Then 
     GoTo NextLoop 
    End If 
     RDate = .Offset(i, 3) 
     RVal = .Offset(i, 4) 
     With Sheets("Enhancements").Range("B3") 
      If .CurrentRegion.Rows.Count = 1 Then 
       .Offset(1, 0) = strProject 
       j = 1 
      Else 
       BlnProjExists = False 
       For j = 1 To .CurrentRegion.Rows.Count - 1 
        If .Offset(j, 0) = strProject Then 
         BlnProjExists = True 
         Exit For 
        End If 
       Next j 
       If BlnProjExists = False Then 
.Offset(j, 0) = strProject 
       End If 
      End If 
      Select Case Format(RDate, "mmm yy") 
       Case "Apr 13" 
        m = 1 
       Case "May 13" 
        m = 2 
       Case "Jun 13" 
        m = 3 
       Case "Jul 13" 
        m = 4 
       Case "Aug 13" 
        m = 5 
       Case "Sep 13" 
        m = 6 
       Case "Oct 13" 
        m = 7 
       Case "Nov 13" 
        m = 8 
       Case "Dec 13" 
        m = 9 
       Case "Jan 14" 
        m = 10 
       Case "Feb 14" 
        m = 11 
       Case "Mar 14" 
        m = 12 
      End Select 
      .Offset(j, m) = .Offset(j, m) + RVal 
     End With 
NextLoop: 
    Next i 
End With 
End Sub 

불행하게도 나는 '컴파일 오류 : 정의되지 않은 라벨'수신 오류 및 디버그 문제로 다음 줄을 강조하고 나는 왜 그런지 모르겠다 :

GoTo Nexti 

나는 누군가가 아마도 이것을 볼 수 있었는지, 내가 잘못한 곳을 알려주고 있는지 궁금해했다.

도움이된다면 테스트 파일에 대한 링크를 제공 할 수 있습니다.

많은 감사와 안부

답변

0

당신은 값이 "향상"입니다 다른 때 아무것도 아닙니다.

If InStr(.Offset(i, 0), "Enhancements") > 0 Then 
     strProject = .Offset(i, 0) 
    End If 

이에 :

If InStr(strProject, "Enhancements") = 0 Then 
     GoTo NextLoop 
    End If 

을하고 "다음 나는"전에 NextLoop 식별자 추가 :이 변경

 End With 
NextLoop: 
    Next i 
End With 
End Sub 
+0

안녕 @ 조, 시간을내어 주셔서 대단히 감사합니다 내 게시물에 답장하십시오. 제안한대로 코드를 수정 했으므로 수정 된 전체 스크립트는 원본과 동일하게 표시됩니다. 그것은 분명히 오류 메시지를 정렬하지만, 불행히도 '목적지'시트에 복사되지 않습니다. 많은 감사와 친절한 말 감사합니다 – IRHM

+0

'Instr ....'위에'strProject = .Offset (i, 0)'이 없습니다. – Joe

+0

안녕하세요 @ 조이 내 게시물에 회신하는 시간을내어 주셔서 대단히 감사합니다. 그리고 솔루션을 위해 완벽하게 작동합니다. 모든 최선의 친절한 안부. – IRHM