2017-01-27 1 views
1

두 개의 워크 북이 있습니다. "Main"과 "Aux"라고 부르 자.한 워크 시트의 값을 사용하여 다른 워크 시트의 값을 확인한 다음 셀로 돌아 가기

"주"에서 실행되고 "Aux"의 데이터를 사용할 함수를 작성하고 있습니다.

"기본"에는 하나의 워크 시트에있는 사람들의 목록이 있습니다. 각 사람을 위해, 나는 그 사람이 갖고있는 기술이 "> 3"인 통합 문서 "Aux"를 확인하고,이를 연결하고 통합 문서 "Main"에 셀을 채우고 싶습니다.

이것은 지금까지 작성한 코드입니다. 문제는 범위가 "기본"통합 문서를 참조하고 있으며 원하는 데이터가 "Aux"통합 문서에 있다는 것입니다.

스킬은 열 "A"는 "보조"책

  • 열 G는 각 사람의 이름을 보관 유지하는 "기술"을 가질 때 식별됩니다. "보조"에
  • 열 D는

코드 변수 뎁과 deb2가있는 MsgBox를 사용하여 디버깅에 사용되는

  • 기술의 이름을 원하는 분야

    Public Function Arroz(name As String) As String 
    
        Dim rngFound As Range 
        Dim strFirst As String 
        Dim strID As String 
        Dim strDay As String 
        Dim skillsAs String 
        Dim deb As String 
        Dim deb2 As String 
    
    
        strID = "Person number one" 
        strDay = "Technical" 
        skills= "" 
    
    
        Set rngFound = Workbooks("Aux.xlsx").Sheets("Skills Mao").Columns("G").Find(strID, Cells(Rows.Count, "G"), xlValues, xlWhole) 
    
        If Not rngFound Is Nothing Then 
         strFirst = rngFound.Address 
         Do 
          deb = Cells(rngFound.Row, "A").Text 
          deb2 = Cells(rngFound.Row, "M").Value 
          MsgBox deb 
          MsgBox deb2 
          If LCase(Cells(rngFound.Row, "A").Text) = LCase(strDay) And Cells(rngFound.Row, "M").Value >= 4 Then 
           skills = skills & Cells(rngFound.Row, "D").Text & " ," 
          End If 
          Set rngFound = Columns("G").Find(strID, rngFound, xlValues, xlWhole) 
         Loop While rngFound.Address <> strFirst 
        End If 
        strLast = rngFound.Address 
        Set rngFound = Nothing 
    
        Arroz = competencies 
        Exit Function 
        End Function 
    

    누군가가 나를 알아내는 데 도움이 할 수있는 작업 내가 잘못하고있어?

  • +0

    이 코드를 실행할 때 어떤 일이 발생하는지 알려주십시오. 오류 메시지가 나타 납니까? 'rngFound'는 무언가를 발견했을 때 아무것도 반환하지 않습니까? – CodeJockey

    +0

    이 코드를 실행하면 worshkeet "Aux"를 예상 할 때 워크 시트 "Main"에서 값을 얻습니다. – noitib

    답변

    1

    문제는 시트를 지정하지 않고 Cells을 사용하는 것입니다. 그렇게하면 Cells은 활성 시트, 즉 이름을 지정한대로 "주"를 나타냅니다. 이 같은 것을보십시오 : 당신은 혼자 Cells 대신에 그 시트에서 셀을 원하는 목적지

    ' ------ More of your existing code above ------ 
    strID = "Person number one" 
    strDay = "Technical" 
    skills= "" 
    
    ' ----- My added snippit ----- 
    Dim shAux as Worksheet 
    Set shAux = Workbooks("Aux.xlsx").Sheets("Skills Mao") 
    Set rngFound = shAux.Columns("G").Find(strID, shAux.Cells(Rows.Count, "G"), xlValues, xlWhole) 
    

    그런 shAux.Cells를 사용합니다.

    +0

    그 트릭을 수행했습니다! 고맙습니다. – noitib

    관련 문제