2017-08-24 2 views
1

Mon exigence est chaque fois qu'il y a une mise à jour de la cellule "A1" de mon classeur principal (main.xlsm) feuille1, je dois copier cette ligne entière de données dans un Excel différent (par exemple working.xlsm). La feuille principale a des colonnes de A à M et la capture de données devrait se produire dépend du changement de données de cellule A1. Toutes les données sont conservées dans le second Excel et toutes les nouvelles données seront ajoutées à la ligne suivante.copier la colonne entière d'un Excel à un autre dépend du changement dans une valeur de cellule

J'ai ajouté le code ci-dessous à mon deuxième classeur (working.xlsm), où j'ai besoin de sauvegarder toutes les données, mais cela ne fonctionne pas. Je ne sais pas comment utiliser une gamme avec with fonction

Private Sub Worksheet_Calculate() 

With Sheet1 
    With .Cells(.Rows.Count, "B").End(xlUp) 
     If .Value <> Workbooks("main.xlsm").Worksheets("Sheet1").Range("A1").Val‌ue Then 
      .Offset(1).Value = Sheet1.Range("A:M").Value 
     End If 
    End With 
End With 

End Sub 
+0

ayant imbriqué avec des instructions est inutile. utilisez simplement 'Avec Sheet1.Cells (Sheet1.Row.Count," B "). End (xlUp)'. Vous ne définissez pas non plus Sheet1 – sourceCode

+0

Vous devez également avoir le classeur "main.xlsm" ouvert pour le référencer comme cela – sourceCode

+0

Si vous observez des changements se produisant dans le classeur principal, vous devriez mettre ce code à l'intérieur. –

Répondre

1

Ce code, si elles sont mises dans la feuille sur main.xlsm, copiez A1: M1 de main.xlsm à la première ligne vide de années working.xlsm Feuille1 chaque fois que A1 de la feuille est changé. Cela suppose que working.xlsm est actuellement ouvert aussi, pour référence.

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim ws As Worksheet 
Set ws = Workbooks("working").Sheets("Sheet1") 
If Not Intersect(Target, Range("A1")) Is Nothing Then 
    Range("A1:M1").Copy 
    ws.Range("A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1).PasteSpecial xlPasteValues 
End If 
End Sub 

Est-ce ce que vous cherchiez?

+0

Merci. comment puis-je coller uniquement les valeurs de A1: M1 à la feuille de travail. la feuille principale contiendra des formules mais je n'ai besoin que des valeurs à copier – acr

+0

Je mettrai à jour ma réponse. –

+0

Il a encore quelques problèmes pendant que j'utilise la formule dans A1 https://www.dropbox.com/sh/haxoxgtldqmdcxe/AAB5_SG95Woho6wnB8X4ynUIa?dl=0 – acr