2017-09-15 25 views
0

在我的Excel问题中,我有一个相当有趣的问题。基本上我有两个工作簿,可以说VBA从外部工作簿发送/提取数据 - 有趣的问题

ACTIVE .XLSM和外部的.xls

主动具有打开外部活跃一些数据下降宏,然后读external上的解决方案,并将其返回给活动工作簿上的用户。呼。这是一个艰难的。现在我们已经解决了这个问题。我个人认为外部(我无法修复它的公司只读文件)有一个小故障,当活动将其数据放入特定的下拉列表(数据验证)时,单元格(其他数据验证单元格可与此宏一起工作良好,但只有这个宏没有),外部上的解决方案单元不会更新,而是跳转到“#N/A”。此时,我的VBA遇到了一个bug,代码停止,外部仍然打开。当我看着外部,我推断这个单一的可变单元格是所有其他可变单元格决定解决方案的问题。

此时变量单元格包含数字“150”,尽管数据验证允许此选项,但解决方案单元格仍然会显示“#N/A”。直到我用“150”物理地点击单元格内部,例如我要编辑它,然后按回车键,#N/A就会纠正到合适的解决方案(假设这个解决方案是“$ 352.08” )请记住,变量单元格中的值永远不会更改,它可能只是“刷新”。

任何想法为什么会发生这种情况?我知道这是啰嗦,但我想这就是为什么我一直无法找到解决方案。也许有一个VBA解决方案可以模拟点击单元格,然后按回车,谁知道!

提前致谢!

以下是一些funsies的代码,尽管我不相信这是一个代码问题,因为它适用于我一直在使用的所有其他“external”。

...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!这是一个很好的练习,我已经将它应用于我的代码。不幸的是,它仍然不能解决问题,但它现在更加漂亮! –

相关问题