J'ai une feuille de calcul de budgétisation contenant plusieurs feuilles et formules. Un utilisateur peut entrer ses données dans le grand livre et divers scénarios financiers sont automatiquement calculés. Le grand livre contient des cellules contenant des formules et peut être écrasée par l'utilisateur. C'est bien depuis que la feuille de calcul est la projection du mois par mois et doit être mise à jour avec des entrées réelles pour que les projections soient précises.
occasionnellement, je mettez à jour / met à jour la feuille de calcul de la budgétisation et souhaite que l'utilisateur puisse exporter ses données de l'ancienne feuille de calcul et l'importer dans la nouvelle feuille de calcul. J'ai créé une macro qui exporte les données de certaines gammes. J'ai également créé une macro qui importe la plage de données dans la nouvelle feuille de calcul. P>
Cependant, mon problème est que la macro à exporter convertit également des calculs prédéterminés de leur formule d'origine (= A1 + B2, par exemple) quel que soit le résultat, c'est pour cette formule (1 200 $, par exemple). Cela provoque des problèmes pour les futures projections dans d'autres gammes de données, car la formule est maintenant remplacée par un nombre statique qui ne peut pas changer en fonction d'autres dépôts / retraits mensuels. P>
J'ai essayé d'exporter les données moins les cellules contenant des formules mais ont échoué. J'ai attaché mon code d'exportation de travail (comme j'ai beaucoup de feuilles et de gammes, je n'ai affiché que le minimum pour montrer ce que j'ai travaillé). J'ai également joint le code que j'ai utilisé pour ignorer les cellules avec des formules (inspirées par ce post Excel VBA Copie / Coller Macro: Ignorer les cellules avec des formules ). Toute aide est grandement appréciée. Comme c'est sûrement évident, je suis nouveau à VBA et connaissez à côté de rien! P>
Code d'exportation de travail: p> non-fonctionnement: ignorer les cellules Avec formule p>
3 Réponses :
J'ai essayé votre code et il semble fonctionner très bien. Comment ça échoue, sur quelles données?
Vous copiez des valeurs d'une gamme et en les collant à la même plage em>, il n'ya donc aucun moyen de savoir si cela fonctionne. Essayez de mettre à jour ces lignes, définissez la source et la cible sur différentes gammes. Par exemple, p> vous pouvez essayer p>
Ça a échoué peut-être parce que je ne sais pas vraiment ce que je fais :) J'avais essayé de combiner le deuxième code dans le premier ... mais après avoir vu cela posté ici, je me demande maintenant si je suis censé avoir chaque section codé individuellement. Je vais réessayer quand j'ai plus de temps et rapporterai ... Peut-être pas pour une journée ou 2.
Voici un simple sous-programme qui ne déplace que des valeurs constantes de Il doit être simple à modifier cela à vos besoins, mais laissez-moi savoir si vous avez des problèmes. . P> scellés1 code> sur un nouveau classeur. Sub CopyWithoutFormulas()
Dim newWorkbook As Workbook
Set newWorkbook = Workbooks.Add
Dim formulas As Range
On Error Resume Next
Set formulas = Sheet1.UsedRange.SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
If formulas Is Nothing Then
'no formulas so move all values across in one batch
newWorkbook.Worksheets(1).Range(Sheet1.UsedRange.Address).Value = Sheet1.UsedRange.Value
Else
'formulas found so only move constants across
Dim r As Range
For Each r In Sheet1.UsedRange
If Intersect(r, formulas) Is Nothing Then
newWorkbook.Worksheets(1).Range(r.Address).Value = r.Value
End If
Next
End If
End Sub
Merci pour votre suggestion. Je vais essayer quand j'ai le temps et faire un rapport dans une journée ou 2.
J'ai essayé plusieurs suggestions de ce site, ainsi que d'autres, mais je ne suis pas vraiment sûr de savoir comment écrire du code en premier lieu, je n'obtiens nulle part. Pour l'enregistrement, le code que j'ai posté comme "fonctionnel" J'ai modifié une source en ligne et ce que je veux exactement ce que je veux ... sauf qu'il copie des cellules avec des formules. Le code "Working" crée un nouveau classeur avec les mêmes onglets et exporte les données vers les mêmes cellules respectives. Maintenant, si seulement je peux éditer mon code "fonctionnel" existant pour éliminer la copie des cellules avec des formules? Pour référence, voici le code "fonctionnel" complet moins toutes les feuilles / gammes de données.
Sub GenerateData()
Dim strFile As String
'New workbook with 3 sheets
Workbooks.Add xlWBATWorksheet
ActiveSheet.Name = "Financial Info"
Sheets.Add(After:=Sheets(1)).Name = "HELOC"
Sheets.Add(After:=Sheets(2)).Name = "Accelerated Mortgage"
Sheets.Add(After:=Sheets(3)).Name = "Accelerated 2nd Loan"
ActiveWorkbook.Sheets("Financial Info").Range("G6:G8").Value = ThisWorkbook.Sheets("Financial Info").Range("G6:G8").Value
ActiveWorkbook.Sheets("Financial Info").Range("G11:G13").Value = ThisWorkbook.Sheets("Financial Info").Range("G11:G13").Value
ActiveWorkbook.Sheets("HELOC").Range("D13:F74").Value = ThisWorkbook.Sheets("HELOC").Range("D13:F74").Value
ActiveWorkbook.Sheets("HELOC").Range("D86:F147").Value = ThisWorkbook.Sheets("HELOC").Range("D86:F147").Value
ActiveWorkbook.SaveAs "Exported Data.xlsx"
End Sub