.End(xlToRight) au sein d'une gamme
Je viens tout juste une petite demande si je peux en quelque sorte modifier le fragment de code suivant pour inclure .End(xlToRight)
au lieu de définir L6
(le résultat est le même).
Sub Test()
Dim LastCol As String
With Worksheets("Sheet1")
LastCol = .Cells(5, .Columns.Count).End(xlToLeft).Address
.Range(Range("A5"), LastCol).Copy
.Range("B5:L5", Range("B5:L5").Offset(LastRow - FirstRow, 0)).PasteSpecial xlPasteFormulas
.Range("B6", .Cells.SpecialCells(xlCellTypeLastCell)).Copy
.Range("B6").PasteSpecial xlPasteValues
End With
End Sub
Merci beaucoup pour toute aide 🙂
EDIT: mise à jour de l'assistant empaquetage et déploiement TonyDallimore (voir la réponse ci-dessous)
Tony, le code ci-dessus est la somme de ce que j'ai essayé de le faire fonctionner. Dans le with
déclaration, je suis à la recherche pour copier le contenu de la ligne 5, et de les coller vers le bas pour la nième ligne - qui est défini par une liste déjà présente dans columnA. La dernière ligne par vos conseils, il pourra ensuite coller les valeurs de tous, mais la ligne du haut (r5) afin de préserver la transparence pour l'utilisateur, tout en minimisant la taille du fichier.
Le peu moyen est le reste de "travail en cours", comme L5 n'est pas certain d'être le farmost colonne.
Vous devez vous connecter pour publier un commentaire.
Deux questions
.End(xxx)
est le même queCtrl+Arrow
à partir du clavier et s'arrête à la première cellule qui est différent de la cellule en cours. Donc, si vous commencez à partir d'une cellule avec une valeur il s'arrête à une cellule sans valeur ou vice versa.Le problème de départ en haut à gauche et à l'aide de
xlDown
etxlToRight
est qu'il s'arrête à une cellule vide dans le milieu de votre table. Amende si vous ne pouvez absolument pas avoir une cellule vide dans le milieu, maisXlUp
ouxlToLeft
en bas à droite sont plus sûrs.Question 1
Est votre problème
.End(xxx).Column
sera de retour les 12 et vous ne savez pas comment la mettre dans la lettre "L"?En est ainsi, il y a beaucoup de choix. Je pense que le plus simple est de se rappeler que
.Cells(6,Columns.Count).End(xlToLeft).Address
serait de retour "$L$6".
Question 2
Ne
.Cells(1000, ColRange)
représentent la cellule inférieure droite?.Cells.SpecialCells(xlCellTypeLastCell)
pourrait être une option plus facile.With Sheets("xxx")
.Range("B6", .Cells.SpecialCells(xlCellTypeLastCell)).Copy
.Range("B6").PasteSpecial xlPasteValues
End With
.Range(.Cells(RowTop, ColLeft), .Cells(RowBot, ColRight)
et RowTop, ColLeft, RowBot et ColRight individuellement. Je ne suis pas concerné par la façon dont beaucoup que je peux fourrer dans un seul état; je suis préoccupé par le temps qu'il me faut pour y arriver et que je ne comprends pas la déclaration dans les six mois quand je dois la mettre à jour. Combien de temps fait qu'il manque des point au milieu d'une déclaration de l'Union des coûts vous?.Range(Range("A5"), LastCol).Copy
LastCol est une chaîne de sorte que vous devez Gamme(LastCol). Je n'ai pas testé ce code, donc je ne suis pas sûr que ce soit la seule erreur. Comme pour mon précédent commentaire, je ferais LastCol un entier et mis à.Cells(5, .Columns.Count).End(xlToLeft).Column
je puis utiliser.Range(.Cells(5,"A"), .Cells(5,LastCol)).Copy
. Parce que j'ai toujours utiliser cette syntaxe, j'ai toujours le comprendre. Je veux que mon code fonctionne aussi rapidement que possible; je ne se soucient pas de savoir si ça fait de moi intelligent ou pas.