J'ai un problème plutôt intéressant en cours dans mon problème Excel. Fondamentalement, j'ai deux Workbooks, laisse direVBA Envoyer/tirer des données à partir de cahier externe - question intéressante
ACTIVE .xlsm et EXTERNE .xls
actif a une macro qui ouvre externe et tombe dans certaines données de actif, puis lit une solution sur externe et le renvoie à l'utilisateur sur le classeur actif. Ouf. C'est un dur. Maintenant que nous sommes à travers cela, voici le problème. Il est mon opinion personnelle qu'il ya un pépin dans externe (que je suis incapable de fixer comme un fichier de la société en lecture seule) que lorsque actif baisse dans ses données dans une liste déroulante spécifique (validation des données) cellule (d'autres cellules de validation de données fonctionnent bien avec cette macro, c'est seulement celle qui ne le fait pas), la cellule de solution externe ne met pas à jour, mais saute plutôt à "# N/A". À ce stade, mon VBA a rencontré un bug, et le code s'arrête avec externe toujours ouvert. Quand je regarde externe, j'ai déduit que cette cellule variable singulière est le problème amdist toutes les autres cellules variables déterminant la solution. La cellule variable à ce stade contient le nombre "150" et bien que la validation de données permette cette option, la cellule de solution dit toujours "# N/A". Ce n'est que lorsque je clique physiquement à l'intérieur de la cellule avec "150" comme je vais l'éditer, puis j'appuie sur enter, que le # N/A corrige la solution appropriée (Disons que cette solution est "$ 352.08") Gardez à l'esprit que la valeur dans la cellule variable n'a jamais changé, elle était peut-être seulement "rafraîchie".
Des idées sur les raisons pour lesquelles cela se produit? Je sais que c'est long, mais je suppose que c'est la raison pour laquelle je n'ai pas trouvé de solution jusqu'à maintenant. Peut-être qu'il existe une solution de contournement VBA qui peut simuler cliquant dans la cellule, puis en appuyant sur Entrée, qui sait!
Merci d'avance!
Voici un code pour les funsies, bien que je ne crois pas que ce soit un problème de code, car cela fonctionne pour tous les autres "external" avec lesquels j'ai travaillé.
...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...
Merci une tonne @jstola! C'est une bonne pratique à garder à l'esprit, et je l'ai appliqué à mon code. Malheureusement, cela ne résout toujours pas le problème, mais c'est beaucoup plus propre maintenant! –