J'ai trouvé une solution similaire à cette question dans c # ... Voir lien ci-dessous
Comment sélectionner toutes les cellules d'une feuille de calcul dans l'objet Excel.Range de c #?
Quelqu'un at-il un extrait pour le faire dans VBA? Je ne connais pas vraiment VBA, donc ce serait utile. Voici ce que j'ai jusqu'à présent ...
Je sélectionne les données normalement en utilisant "ctrl + shift sur flèche, flèche vers le bas" pour sélectionner une plage entière de cellules. Lorsque je lance ceci dans une macro, il code A1: Q398247930, par exemple. J'en ai juste besoin
.SetRange Range("A1:whenever I run out of rows and columns")
C’est très simple et je pourrais facilement le faire moi-même sans macro, mais j’essaie de transformer le processus en macro, et c’est juste un élément de celui-ci.
Sub sort()
'sort Macro
Range("B2").Select
ActiveWorkbook.Worksheets("Master").sort.SortFields.Clear
ActiveWorkbook.Worksheets("Master").sort.SortFields.Add Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Master").sort
.SetRange Range("A1:whenever I run out of rows and columns")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
edit: Il y a d'autres parties où je pourrais vouloir utiliser le même code mais la plage est "C3: Fin des lignes et des colonnes". Existe-t-il un moyen dans VBA d'obtenir l'emplacement de la dernière cellule du document?
Merci!
Je crois que vous souhaitez rechercher la région actuelle de A1 et les cellules environnantes - pas nécessairement toutes les cellules de la feuille . Si oui, utilisez simplement ... Range ("A1"). CurrentRegion
Vous pouvez simplement utiliser cells.select
pour sélectionner tout cellules dans la feuille de calcul. Vous pouvez obtenir une adresse valide en indiquant Range(Cells.Address)
.
Si vous voulez trouver le dernier Used Range
où vous avez apporté une modification de formatage ou entré une valeur, vous pouvez appeler ActiveSheet.UsedRange
et le sélectionner à partir de là. J'espère que cela pourra aider
vous pouvez utiliser toutes les cellules comme un objet comme celui-ci:
Dim x as Range
Set x = Worksheets("Sheet name").Cells
X est maintenant un objet de plage qui contient la feuille de calcul entière
vous avez quelques options ici:
Personnellement, j’utilise la gamme utilisée et trouve la plupart du temps la méthode de la dernière ligne et colonne.
Voici comment procéder à l'aide de la propriété UsedRange:
Sheets("Sheet_Name").UsedRange.Select
Cette instruction sélectionnera toutes les plages utilisées dans la feuille de calcul. Notez que parfois cela ne fonctionne pas très bien lorsque vous supprimez des colonnes et des lignes.
L'alternative consiste à trouver la toute dernière cellule utilisée dans la feuille de calcul.
Dim rngTemp As Range
Set rngTemp = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If Not rngTemp Is Nothing Then
Range(Cells(1, 1), rngTemp).Select
End If
Ce que fait ce code:
Je recommanderais d'enregistrer une macro, comme celle trouvée dans ce post;
Macro Excel VBA pour filtrer les enregistrements
Mais si vous cherchez à trouver la fin de vos données et non la fin du classeur nécessaire, s'il n'y a pas de cellules vides entre le début et la fin de vos données, j'utilise souvent quelque chose comme ceci;
R = 1
Do While Not IsEmpty(Sheets("Sheet1").Cells(R, 1))
R = R + 1
Loop
Range("A5:A" & R).Select 'This will give you a specific selection
Il vous reste avec R = le numéro de la ligne après la fin de vos données. Cela peut également être utilisé pour la colonne, puis vous pouvez utiliser quelque chose comme Cellules (C, R) .Select, si vous avez défini C comme représentation de la colonne.
Peut-être que cela pourrait fonctionner:
Sh.Range ("A1", Sh.Range ("A" & Rows.Count) .End (xlUp))
En me référant à la toute première question, je cherche la même chose ... Le résultat obtenu, en enregistrant une macro, est, en commençant par la cellule A76:
Sub find_last_row()
Range("A76").Select
Range(Selection, Selection.End(xlDown)).Select
End Sub
Sub SelectAllCellsInSheet(SheetName As String)
lastCol = Sheets(SheetName).Range("a1").End(xlToRight).Column
Lastrow = Sheets(SheetName).Cells(1, 1).End(xlDown).Row
Sheets(SheetName).Range("A1", Sheets(SheetName).Cells(Lastrow, lastCol)).Select
End Sub
À utiliser avec ActiveSheet:
Call SelectAllCellsInSheet(ActiveSheet.Name)