Je veux être en mesure de sélectionner dynamiquement une plage de cellules (la ligne d'en-tête), où la ligne est 1 mais les colonnes sont pour 1 à la dernière colonne, où "A" est la première colonne et "M" la dernière colonne. Je sais comment trouver la dernière colonne, mais je ne sais pas comment modifier la plage ci-dessous pour entrer les première et dernière colonnes sous la forme de "A" et "M".
Range("A1:M1").Select
Si vous souhaitez sélectionner une plage de variables contenant toutes les cellules d'en-tête:
Dim sht as WorkSheet
Set sht = This Workbook.Sheets("Data")
'Range(Cells(1,1),Cells(1,Columns.Count).End(xlToLeft)).Select '<<< NOT ROBUST
sht.Range(sht.Cells(1,1),sht.Cells(1,Columns.Count).End(xlToLeft)).Select
... tant qu'il n'y a pas d'autre contenu sur cette ligne.
EDIT: mis à jour pour souligner que, lorsque vous utilisez Range(Cells(...), Cells(...))
, il est recommandé de qualifier Range
et Cells
avec une référence de feuille de calcul.
sub selectVar ()
dim x,y as integer
let srange = "A" & x & ":" & "m" & y
range(srange).select
end sub
Je pense que c'est le moyen le plus simple.
Cela dépend donc de la manière dont vous voulez choisir l'incrémenteur, mais cela devrait fonctionner:
Range("A1:" & Cells(1, i).Address).Select
Où i
est la variable qui représente la colonne à sélectionner (1 = A, 2 = B, etc.). Voulez-vous le faire par lettre de colonne à la place? Nous pouvons ajuster si oui :)
Si vous souhaitez que le début soit également dynamique, vous pouvez essayer ceci:
Sub SelectCols()
Dim Col1 As Integer
Dim Col2 As Integer
Col1 = 2
Col2 = 4
Range(Cells(1, Col1), Cells(1, Col2)).Select
End Sub
J'aime utiliser le plus cette méthode, elle sélectionnera automatiquement la première colonne à la dernière colonne utilisée. Toutefois, si la dernière cellule de la première ligne ou la dernière cellule de la première colonne est vide, ce code ne sera pas calculé correctement. Recherchez dans link d’autres méthodes pour sélectionner dynamiquement la plage de cellules.
Sub DynamicRange()
'Best used when first column has value on last row and first row has a value in the last column
Dim sht As Worksheet
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range
Set sht = Worksheets("Sheet1")
Set StartCell = Range("A1")
'Find Last Row and Column
LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column
'Select Range
sht.Range(StartCell, sht.Cells(LastRow, LastColumn)).Select
End Sub