Excel VBA copier/coller de gamme de 1 de la feuille de calcul à l'autre, même gamme de pâtes dans la prochaine colonne de destination à chaque fois
Je suis un nouveau pour Excel VBA.
Je suis en train de copier une plage de données à partir d'une feuille de calcul dans une autre feuille de calcul dans le même classeur.
Donc copier range("A2:B10") dans la feuille "Sheet1" puis collez ("A2") dans la Feuil2.
Chaque fois que la macro est exécutée, je voudrais les valeurs ("Feuille 1").Range("A2:B10") à être collé dans l'consécutifs de la colonne, de sorte que dans cette instance dans le "B2" dans la Feuille 2.
Merci pour votre aide!
J'ai la première partie, mais aux prises avec la 2ème partie:
Sub sbCopyRangeToAnotherSheet()
'Set range
Sheets("Sheet1").Range("A2:B10").Copy Destination:=Sheets("Sheet2").Range("A2")
'Copy the data
Sheets("Sheet1").Range("A2:B10").Copy
'Activate the destination worksheet
Sheets("Sheet2").Activate
'Select the target range
Range("A2").Select
'Paste in the target destination
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
- Sans doute vous dire A2 et puis C2 (non B2), votre gamme est deux colonnes?
Vous devez vous connecter pour publier un commentaire.
Votre code est bizarre
Cette ligne
Sheets("Sheet1").Range("A2:B10").Copy Destination:=Sheets("Sheet2").Range("A2")
est de copier et de coller le tout dans une seule ligne. Si votre ligne où vous.copy
.activate
.select
et.paste
sont redondantes. Votre première ligne déjà fait tout cela.Vous avez besoin pour identifier la dernière colonne dans la Ligne "A" de la Feuil2. Pour ce faire, vous pouvez utiliser le
.End()
méthode d'un éventail de trouver le occupé pour la première cellule de la ligne. Ensuite, utilisez cette cellule que votre copieDestination
:.End()
méthode, la redondant copie et le collage, l'utilisation de variables à gérer déterminée dynamiquement les choses en VBA et la comme. LeIV
est juste mon ancienne école lézard cerveau de l'écriture de code, sans réfléchir plus agréable des façons de le faire commeColumns.Count
. Cela étant dit, je ne sais toujours quelqu'un qui a retenu les services d'un ordinateur portable XP de sorte qu'ils peuvent utiliser Access 2003 o_0C'est quelque chose qui va faire le travail sans l'aide de
Active
etSelect
:La partie la plus délicate dans le code est de commencer à écrire sur la colonne appropriée sur la cible de la feuille de calcul. Si la feuille de calcul est vide, alors la colonne correcte est la première. Dans tous les autres cas, la colonne correcte est la dernière colonne + 1.
Le niveau moyen de trouver de la dernière utilisation de la colonne
Range.End(xlToLeft).Column
serait toujours de retour de la première colonne de la dernière utilisation de la colonne, w/o de prêter attention à savoir si elle est utilisée ou non. Ainsi, vous avez besoin d'une sorte de vérifier, de savoir si elle est vide ou pas:WorksheetFunction.CountA(.Columns(1)) > 0
destination := target
et sur la ligne suivante ajoutertarget.PasteSpecial Paste:= xlPasteFormats
, il devrait fonctionner. Content d'avoir pu aider - stackoverflow.com/help/someone-answers