2015-01-30 3 views
1

아이디어가 ... 열 A (통합 문서 "원본")의 값이 열 Q (통합 문서 "영향을받는")의 값과 같으면 해당 열 F (통합 문서 "원본")는 열 T (통합 문서 "영향을받는")에서 뺍니다. 하지만 작동하지 않습니다. 어떤 종류의 오류도 발생하지 않으며, 단지 내가 원하는 것을하지 않습니다. 어떤 도움을 주셔서 감사합니다.루프 별도 통합 문서의 한 통합 문서에서 값 빼기

Sub Subtract_Between_workbooks() 
Dim Source As Workbook 
Dim Affected As Workbook 

Dim Dados As Worksheet 
Dim Source_Sheet As Worksheet 

Dim LastRow As Long 
Dim i As Long 
Dim j As Long 
Dim v As Variant 
Dim N As Long 
Dim M As Long 
Dim FinalRow As Long 

Source = Workbooks.Open("\\dsapc429pfs.pactual.net\homefolder02$\wellsty\Desktop\LCA_LCI Macro Writing\ResgatesEmissões.xlsb") 
Affected = Workbooks.Open("\\dsapc429pfs.pactual.net\homefolder02$\wellsty\Desktop\LCA_LCI Macro Writing\New - Macro Writing - Controle de Lastro LCA.xlsm") 

Set Dados = Workbooks(Affected).Sheets("Dados") 
Set Source_Sheet = Workbooks(Source).Sheets("Sheet1") 

LastRow = Source_Sheet.Cells(Rows.Count, "A").End(xlUp).Row 
N = Dados.Cells(Rows.Count, "Q").End(xlUp).Row 
M = Source_Sheet.Cells(Rows.Count, "A").End(xlUp).Row 

For Z = 1 To LastRow 
If Source_Sheet.Range("B" & i) = "LCA" And Source_Sheet.Range("D" & i) = "Resgate Final Passivo Cliente" And Source_Sheet.Range("H" & i) = "9007230" Then 
    For i = 1 To M 
     v1 = Source_Sheet.Cells(i, "A").Value 
     v2 = Source_Sheet.Cells(i, "F").Value 
     For j = 1 To N 
      If v1 = Dados.Cells(j, "Q").Value Then 
      Dados.Cells(j, "T").Value = Dados.Cells(j, "T").Value - v2 
      Exit For 
      End If 
     Next j 
    Next i 
Else: End If 
Next Z 

End Sub 

답변

1

당신은 당신의 코드에서 통합 문서로 sourceaffected을 선언했다.

Set Source = Workbooks.Open("\\dsapc429pfs.pactual.net\homefolder02$\wellsty\Desktop\LCA_LCI Macro Writing\ResgatesEmissões.xlsb") 

당신의 코드가 예상처럼 작동하지 않는 경우 디버거를 사용하고, 선으로 코드 라인을 확인하는 것이 좋다 : 당신은 예를 들어 개체에 대한 할당 문을 만들기 위해 Set 키워드를 사용해야합니다.

+0

안녕 Jeanno, 감사 영향으로 스택 오버 플로우 희미한 자료 대기 당신의 응답. 나는 이러한 코드 라인을 변경하고 디버그를했다. 하지만 여전히 작동하지 않습니다. 소스 코드 줄 설정을 누르면 Excel 문서가 다시 열리고 아무 것도 수행하지 않습니다. 그렇다면이 코드가있을 수 있습니까? 다시 한 번 감사드립니다! – New2VBA

+0

두 세트에 대해 세트를 추가했는데 영향을 받았습니까? – Jeanno

1

@Janno의 답변에 대한 첫 번째 루프 변수를 확인하십시오.

For Z = 1 To LastRow 
If Source_Sheet.Range("B" & i) = "LCA" And Source_Sheet.Range("D" & i) = "Resgate Final Passivo Cliente" And Source_Sheet.Range("H" & i) = "9007230" Then 

i를 z로 바꿔야 할 수도 있습니다. 왜냐하면 나는 그 순간에 정의되지 않았기 때문이다.

+0

잡기에는 Set 키워드를 사용해야합니다. 디버거 설정에 문제가 있습니다. 오류가 발생하지 않습니다. – Jeanno

+0

맞습니다. 나는 그가 또한 루프를 체크 아웃해야합니다 귀하의 답변을 언급하는 것을 잊어 버렸습니다. 너무 많은 중첩 for 루프가 혼란 스러울 수 있습니다. 나는 적어도 나를 위해 의미한다 :) – Dubison

+0

심지어 내가 그것을했다는 것을 깨닫지 못했다. 둘 다에 키워드를 설정하십시오. 그래도 작동이 안되는. 마치 한 번 Set Source = Workbooks.Open ("\\ dsapc429pfs.pactual.net \ homefolder02 $ \ wellsty \ Desktop \ LCA_LCI Macro Writing \ ResgatesEmissões.xlsb") 코드를 멈추는 것과 같습니다. 이 통합 문서는 매크로가있는 통합 문서입니다. 그게 문제 야? 이걸 제거해야합니까? – New2VBA

0

그냥 내가 일하도록해야한다는 것을 알리고 싶었습니다. 나는 아래 코드를 붙여 넣었다. 나는 문제 해결 도움없이 그것을 이해하지 못했을 것이다. 나는 그것을 많이 고맙다!

하위 Subtract_Between_workbooks() '=== 파라 menos Resgate === 통합 문서 희미한은 워크 북으로 대한

Dim Dados As Worksheet 
Dim Source_Sheet As Worksheet 

Dim LastRow As Long 
Dim i As Long 
Dim j As Long 
Dim v As Variant 
Dim N As Long 
Dim M As Long 
Dim FinalRow As Long 

Set Source = Workbooks("ResgatesEmissões.xlsb") 
Set Affected = Workbooks.Open("\\dsapc429pfs.pactual.net\homefolder02$\wellsty\Desktop\LCA_LCI Macro Writing\New - Macro Writing - Controle de Lastro LCA.xlsm") 

Set Dados = Affected.Sheets("Dados") 
Set Source_Sheet = Source.Sheets("Sheet1") 

LastRow = Source_Sheet.Cells(Rows.Count, "A").End(xlUp).Row 
N = Dados.Cells(Rows.Count, "Q").End(xlUp).Row 
M = Source_Sheet.Cells(Rows.Count, "A").End(xlUp).Row 

For Z = 1 To LastRow 
If Source_Sheet.Range("B" & Z) = "LCA" And Source_Sheet.Range("D" & Z) = "Resgate Final Passivo Cliente" And Source_Sheet.Range("H" & Z) = "9007230" Then 
    For i = 1 To M 
     v1 = Source_Sheet.Cells(i, "A").Value 
     v2 = Source_Sheet.Cells(i, "F").Value 
     For j = 1 To N 
      If v1 = Dados.Cells(j, "Q").Value Then 
      Dados.Cells(j, "T").Value = Dados.Cells(j, "T").Value - v2 
      Exit For 
      End If 
     Next j 
    Next i 
Else: End If 
Next Z 

최종 하위

관련 문제