2017-08-16 11 views
1

J'ai un modèle standard. Pour contrer le fait que les utilisateurs ajoutent leurs propres colonnes, j'ai indexé toutes les colonnes. J'ai fait une variable pour l'en-tête du titre et assigné un entier à cette variable. Donc la colonne A est toujours appelée la variable de chaîne ColumnA avec la variable entière IColumnA. J'ai aussi un nombre fixe de lignes et la variable LRow pour la dernière ligne.plage de copie en utilisant les numéros de colonne et de ligne (entier) vba

Ma question est:

Comment puis-je sélectionner une plage de colonne avec la variable entière?

Par exemple range(IcolumnA, lastrow .end (xlUp)).Copy (ou une variante des présentes)

Cela ne fonctionne pas parce que les entiers ne fonctionnent pas avec la méthode de la plage (je pense).

Qui peut m'aider?

Répondre

1

Edit: Ceci est une solution générale de la question: "Comment puis-je copier des plages". La réponse est - déclare une source et cible et copier la source vers la cible:

Option Explicit 

Public Sub TestMe() 

    Dim rngSource As Range 
    Dim rngTarget As Range 

    With Worksheets(1) 
     Set rngSource = .Range(.Cells(2, "A"), .Cells(100, "B")) 
     Set rngTarget = .Range(.Cells(2, "C"), .Cells(100, "D")) 

     rngSource.Copy 
     rngTarget.PasteSpecial xlPasteAll 
     Application.CutCopyMode = False 
    End With 

End Sub 

Si vous ne souhaitez que copier toute la colonne, essayez quelque chose comme ceci:

Sub TestMe() 

    Range(Columns(5), Columns(6)).Copy 
    Range(Columns(7), Columns(8)).PasteSpecial xlPasteAll 
    Application.CutCopyMode = False 

End Sub 

Il copiera colonnes 5 à 6 aux colonnes 7 à 8. Bien sûr, au lieu de chiffres, vous pouvez mettre des variables.


Et cela est un peu plus sophistiqué, avec des variables:

Sub TestMe() 

Dim lngCopyColumn As Long: lngCopyColumn = 2 
Dim lngPasteColumn As Long: lngPasteColumn = 10 
Dim lngLenC   As Long: lngLenC = 3 

Range(Columns(lngCopyColumn), Columns(lngCopyColumn + lngLenC)).Copy 
Range(Columns(lngPasteColumn), Columns(lngPasteColumn + lngLenC)).PasteSpecial xlPasteAll 
Application.CutCopyMode = False 

End Sub 
+0

Que voulez-vous dire avec LngLenC? Est-ce le nombre total de lignes? k, clear – MyName

+0

@MyName - nombre total de colonnes dans la plage. Cela devrait être pareil pour les deux gammes. – Vityata

+0

Merci. La seule chose est qu'il sélectionne toute la colonne. J'ai besoin de le décaler avec 1 de la 1ère cellule (donc de la cellule 2) à la fin (xlDown). J'ai essayé de jouer avec peu de succès. Pouvez-vous spécifier où cette commande doit aller? 'WsStam.Range (colonnes (iKolomnrCorpID), colonnes (iKolomnrCorpID)). Copy' – MyName