2017-09-15 8 views
0

필자는 Excel 문제에서 다소 흥미로운 문제가 있습니다. 기본적으로 내가이 통합 문서를 가지고, 다음 읽고외부 통합 문서에서 VBA 보내기/당기기 데이터 - 흥미로운 이슈

ACTIVE .xlsm 및 외부 .XLS

활동외부을 열고 활성에서 일부 데이터에 떨어지는 매크로를 가지고 말할 수 외부에 대한 해결책은사용자에게 반환합니다. 아휴. Thats는 거친 하나 다. 이제 우리는 그 문제를 해결할 수 있습니다. 외부 (회사 읽기 전용 파일로 해결할 수 없음)에 결함이 있다는 것은 내 개인적인 의견입니다. 활성이 데이터를 특정 드롭 다운 (데이터 유효성 검사) 셀 (다른 데이터 유효성 검사 셀은이 매크로에서만 제대로 작동합니다.) 외부의 외부에서 솔루션 셀이 업데이트되지 않고 "# N/A"로 점프됩니다. 이 시점에서 내 VBA 버그로 실행 된 및 외부 여전히 코드를 중지합니다. 내가 외부을 볼 때, 나는이 단일 변수 셀이 해결책을 결정하는 다른 모든 가변 셀의 문제라고 추론했다.

이 시점의 변수 셀에는 숫자 "150"이 포함되어 있으며 데이터 유효성 검사에서이 옵션을 허용하지만 솔루션 셀에는 여전히 "# N/A"라고 표시됩니다. 내가 물리적으로 "150"이라는 셀을 클릭 할 때까지 편집 할 것입니다. 그런 다음 Enter 키를 누릅니다. # N/A가 해당 솔루션으로 수정됩니다 (이 솔루션은 "$ 352.08"이라고 가정 해 봅시다).) 변수 셀 내의 값은 변경되지 않았을 것입니다. 아마도 "새로 고쳐진"것일뿐입니다.

왜 이런 일이 발생하는지 알고 싶습니다. 나는 이것이 오래 동안 지속되었다는 것을 알고있다. 그러나 나는 그것이 내가 지금까지 해결책을 찾을 수 없었던 이유라고 생각한다. 아마도 셀에서 클릭을 시뮬레이션 한 다음 enter 키를 눌러 VBA 해결 방법을 알 수 있습니다.

미리 감사드립니다.

다른 코드 "external"에 대해 작동하는 것처럼 여기에 funsies 코드가 있습니다. 코드 문제는 아닙니다.

...ElseIf Left(Range("C9").Value, 4) = "LA23" Then 

CurWkbk = ActiveWorkbook.Name 

PartNo = Worksheets("LINAK ONE").Range("C6").Value 
PartNoID_B = Worksheets("GPL Pull").Range("B8").Value 
PartNoID_C = Worksheets("GPL Pull").Range("C8").Value 
PartNoID_D = Worksheets("GPL Pull").Range("D8").Value 
PartNoID_E = Worksheets("GPL Pull").Range("E8").Value 
PartNoID_F = Worksheets("GPL Pull").Range("F8").Value 
PartNoID_G = Worksheets("GPL Pull").Range("G8").Value 
PartNoID_H = Worksheets("GPL Pull").Range("H8").Value 
PartNoID_I = Worksheets("GPL Pull").Range("I8").Value 
PartNoID_J = Worksheets("GPL Pull").Range("J8").Value 
PartNoID_K = Worksheets("GPL Pull").Range("K8").Value 

Workbooks.Open ("EXTERNAL.xls") 
Workbooks("EXTERNAL.xls").Sheets("Price").Activate 
Range("E9").Value = PartNoID_B 
Range("G9").Value = PartNoID_C 
Range("I9").Value = PartNoID_D 
Range("K9").Value = PartNoID_E 
Range("M9").Value = PartNoID_F 
Range("O9").Value = PartNoID_G 
Range("Q9").Value = PartNoID_H 
Range("S9").Value = PartNoID_I 
Range("S9").Select 
ActiveCell.Calculate 
Range("U9").Value = PartNoID_J 
Range("W9").Value = PartNoID_K 

Range("AD7").Value = "LUS" 
LUSPrice = Range("AE9").Value 
Range("AD7").Value = "USD" 
USDPrice = Range("AE9").Value 
Range("AD7").Value = "DKK" 
DKKPrice = Range("AE9").Value 

Windows(CurWkbk).Activate 
ActiveWorkbook.Sheets("Discount Calculator").Activate 
Range("D5").Value = LUSPrice 

ActiveWorkbook.Sheets("PRICE GENERATOR").Activate 
Range("C25").Value = PartNo & " Pricing | LUS: $" & Round(LUSPrice, 2) & " | USD: $" & Round(USDPrice, 2) & " | DKK: kr " & Round(DKKPrice, 2) 
MsgBox "Tillykke! Pricing for the " & PartNo & " has been generated. The price has been entered into the discount calculator.", , "Pricing Generated" 
Workbooks("EXTERNAL.xls").Close False... 

답변

0

당신이 당신의 코드를 재 작성 세포

...ElseIf Left(Range("C9").Value, 4) = "LA23" Then   ' which workbook/sheet ???? 

CurWkbk = ActiveWorkbook.Name        ' which workbook ???? 

PartNo = Worksheets("LINAK ONE").Range("C6").Value   ' which workbook ???? 

With Worksheets("GPL Pull") 
    PartNoID_B = .Range("B8").Value 
    PartNoID_C = .Range("C8").Value 
    PartNoID_D = .Range("D8").Value 
    PartNoID_E = .Range("E8").Value 
    PartNoID_F = .Range("F8").Value 
    PartNoID_G = .Range("G8").Value 
    PartNoID_H = .Range("H8").Value 
    PartNoID_I = .Range("I8").Value 
    PartNoID_J = .Range("J8").Value 
    PartNoID_K = .Range("K8").Value 
End With 

Workbooks.Open ("EXTERNAL.xls") 

With Workbooks("EXTERNAL.xls").Worksheets("Price") 
    .Range("E9").Value = PartNoID_B 
    .Range("G9").Value = PartNoID_C 
    .Range("I9").Value = PartNoID_D 
    .Range("K9").Value = PartNoID_E 
    .Range("M9").Value = PartNoID_F 
    .Range("O9").Value = PartNoID_G 
    .Range("Q9").Value = PartNoID_H 
    .Range("S9").Value = PartNoID_I 
    .Range("S9").Calculate 
    .Range("U9").Value = PartNoID_J 
    .Range("W9").Value = PartNoID_K 

    .Range("AD7").Value = "LUS" 
    LUSPrice = .Range("AE9").Value 
    .Range("AD7").Value = "USD" 
    USDPrice = .Range("AE9").Value 
    .Range("AD7").Value = "DKK" 
    DKKPrice = .Range("AE9").Value 
End With 

CurWkbk.Worksheets("Discount Calculator").Range("D5").Value = LUSPrice   ' which workbook ???? 

CurWkbk.Worksheets("PRICE GENERATOR").Range("C25").Value = PartNo & " Pricing | LUS: $" & Round(LUSPrice, 2) & " | USD: $" & Round(USDPrice, 2) & " | DKK: kr " & Round(DKKPrice, 2) 
MsgBox "Tillykke! Pricing for the " & PartNo & " has been generated. The price has been entered into the discount calculator.", , "Pricing Generated" 
Workbooks("EXTERNAL.xls").Close False... 
+0

감사 톤 @jstola을 정규화 된 참조를 사용한다! 이것은 염두에 두는 위대한 연습이고, 나는 그것을 코드에 적용했다. 불행히도, 여전히 문제를 해결하지는 못하지만, 지금은 훨씬 더 깔끔합니다! –