web-dev-qa-db-fra.com

Comment sélectionnez-vous l'intégralité de la feuille Excel avec Range en utilisant Macro dans VBA?

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!

20
matrixugly

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

24
ExcelExpert

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

19
chancea

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

7
user4791681

vous avez quelques options ici:

  1. Utilisation de la propriété UsedRange
  2. trouver la dernière ligne et la dernière colonne utilisées
  3. utiliser un imitateur de décalage vers le bas et de passer à droite

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:

  1. Trouver la dernière cellule contenant une valeur
  2. sélectionner la cellule (1,1) jusqu'à la dernière cellule
4
Derek Cheng

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. 

1
MakeCents

Peut-être que cela pourrait fonctionner:

Sh.Range ("A1", Sh.Range ("A" & Rows.Count) .End (xlUp))

0
Sarah

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
0
Pavlin Todorov
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)
0
Yehia Amer