Excel click l'object stocke la valeur d'une cellule à l'autre

J'essaie de travailler sur quelque chose dans Excel VBA mais je ne peux pas sembler le faire fonctionner correctement.

Voici comment cela devrait fonctionner: je dois copyr et coller la valeur de la cellule "J21" d'une feuille à l'autre. MAIS, la valeur de J21 continue de changer chaque semaine. Je pensais donc que si je crée un code où je vais simplement appuyer sur un object (dis "MAGASIN!") Et il copy la valeur de "J21" de Sheet1 à "C3". 2. Ensuite, lorsque la valeur de J21 change, Je presse simplement "STORE!" à nouveau et il copyra la valeur de J21 et le coller sur la feuille "C4" 2 sans changer la valeur précédente sur la feuille 2 "C3".

Voici ma dernière tentative:

Dim myCell As Range, myRange As Range, i As Long i = 3 Set myRange = Sheets("Summary").Range("C3") Set myRange = Range(myRange, myRange.End(xlDown)) Sheets("Sheet1").Select Range("J21").Copy Sheets("Summary").Select Cells(i, 3).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False i = i + 1 

myCell et myRange ont été utilisées pour mes tentatives précédentes, mais elles continuent toujours à copyr une copy infinie.

La sélection et la copy-coller dans VBA ne sont généralement pas nécessaires. Si vous souhaitez modifier la valeur d'une cellule, il est préférable d'utiliser directement la propriété de valeur d'un object de scope. Vous semblez vouloir établir une reference à la première cellule vide ci-dessous C2 sur Sheet2. Le problème avec votre code est que Range (myRange, myRange.End (xlDown)) sélectionne un bloc entier de cellules (au-dessus de la cellule que vous voulez) plutôt que d'une seule cellule. Bien qu'il soit possible d'utiliser .End (xlDown) de façon appropriée pour accéder à la cellule que vous voulez, il est quelque peu difficile d'avoir raison car il se comporte différemment selon que la cellule soit ou non vide. Une boucle de time est un path à parcourir. Quelque chose comme:

 Sub store() Dim target As Range, source As Range Set source = Sheets("Sheet1").Range("J21") Set target = Sheets("Sheet2").Range("C3") Do While Not IsEmpty(target.Value) Set target = target.Offset(1) Loop target.Value = source.Value End Sub 

La suggestion de Chip que vous apprenez les bases de VBA est bonne. Si vous êtes quelqu'un (comme moi) qui apprend à travers des livres mieux que les tutoriels en ligne, je reorderais presque tout par John Walkenbach – J'ai d'abord appris à programmer Excel en lisant une première édition de son "Excel VBA Programming for Dummies".