0
votes

Obtenez la dernière ligne de la plage spécifiée dans Excel

Comment puis-je obtenir la dernière ligne d'une plage déjà spécifiée et définie et est connue pour contenir les données que je veux? Il me semble que cela devrait être une propriété de quelque sorte comme gamme.row mais gamme.Orow donne le numéro premier de ligne dans la gamme et je veux que le dernier < / Strong> Numéro de ligne.

Maintenant, le problème est que ma plage ne commence pas dans la ligne 1 de la feuille de source - elle commence dans la rangée 3 et passe à travers la ligne 756. Ci-dessous est l'adresse de ma plage comme vue par le débogueur et elle est définie correctement . Mais puisqu'il commence à la rangée 3 en utilisant rows.count ne fonctionnera pas, car il en résulte 754 au lieu de 756.

des lignes.Count est un référence à la plage qui est un sous-ensemble de la feuille d'origine. Je souhaite le numéro de ligne de la dernière ligne de la feuille de calcul d'origine, exactement comme dans l'adresse ci-dessous. En d'autres termes, il y a une propriété sur l'adresse qui me donnera le 756? xxx

L'adresse présentée dans le débogueur est correcte. Tout ce que je veux, c'est d'extraire la valeur de la ligne de la cellule droite inférieure dans la plage spécifiée qui serait 756. Je peux analyser la valeur d'adresse et le faire si nécessaire, mais je me demande si Excel VBA a une manière plus simple de Atteindre cela?


0 commentaires

4 Réponses :


2
votes

Utilisez xxx

 Entrez la description de l'image ici


6 commentaires

Cela ne fonctionnera que si ma gamme spécifiée commence dans la ligne 1 de ma feuille de calcul. La gamme est un sous-ensemble de la feuille de calcul et peut commencer n'importe où. J'ai une feuille de calcul avec 756 lignes seulement 754 qui sont pertinentes. Mais je veux faire référence à la dernière ligne de la feuille de calcul originale qui pourrait être comptez + ou - un montant inconnu.


@ Nelda.TechSpiress: pourquoi ne pas l'essayer?


@ Nelda.TechSpirsed Non, cela fonctionnera avec ce qui est jamais rangé. dans votre exemple transactionsDatarange.row retournera 3 et transactionsDatarange.rows.count retournera 754 ou le nombre de rangées dans la gamme afin que le calcul est 3 + 754-1 qui est 756


@ Nelda.TechSpiress Avez-vous essayé la formule exacte que j'ai donnée. Il retournera 756 car il ajoute la ligne de départ de la plage au nombre de lignes et soustrait 1 tandis que la plage commence.


Oui, cela a fonctionné après que je l'ai saisi correctement. Mais je cherchais une propriété qui a explicitement travaillé avec la gamme donnée sans que aucun calcul soit exécuté, c'est pourquoi j'ai accepté la réponse de SJR.


@ Nelda.TechSpiress Je n'ai aucun problème avec vous en choisissant l'autre réponse, je voulais juste vous assurer que vous avez vu que cela a fonctionné. J'aurais choisi l'autre aussi.



4
votes

une approche alternative xxx


1 commentaires

Merci d'avoir accepté la réponse, mais Scott fonctionne.



0
votes
Sub TestMe()
    Debug.Print LastRowOfRange(Range("D15:E199"))
End Sub

Function LastRowOfRange(myRange) As Long
    LastRowOfRange = myRange.Rows.Count + myRange.Row - 1
End Function

0 commentaires

0
votes

Spécifie la dernière cellule de la plage.

Sub test()
    Dim transactionsDataRange As Range
    Dim rngT As Range

    Set transactionsDataRange = Range("$A$3:$AP$756")
    With transactionsDataRange
        Set rngT = .Cells(.Rows.Count, .Columns.Count)
    End With
    MsgBox rngT.Row
End Sub


0 commentaires