Obtenir la valeur d'une cellule fusionnée de excel à partir de son adresse de cellule en vba
Comment obtenir la valeur d'une cellule fusionnée de excel avoir plage d'adresses comme "$B$4:$B$11" en vba
- Excel, je suppose? Vaut la peine d'ajouter une balise...
Range("B4:B11").Cells(1).Value
?
Vous devez vous connecter pour publier un commentaire.
Même si il est vraiment déconseillé d'utiliser fusionner des cellules dans Excel (utilisation
Centre à Travers la Sélection
par exemple si nécessaire), la cellule qui "contient" la valeur est celle du en haut à gauche (au moins, c'est une façon de l'exprimer).Par conséquent, vous pouvez obtenir la valeur de la fusion des cellules de gamme
B4:B11
de plusieurs façons:Range("B4").Value
Range("B4:B11").Cells(1).Value
Range("B4:B11").Cells(1,1).Value
Vous pouvez également noter que toutes les autres cellules n'ont aucune valeur en eux. Pendant le débogage, vous pouvez voir que la valeur est
empty
.Également noter que
Range("B4:B11").Value
ne fonctionne pas (génère une erreur d'exécution 13 si vous essayez deDebug.Print
) car il renvoie un tableau.Range("B6").MergeArea.Cells(1,1).Value
Range("B4:B11").Item(1).Value
, ou tout simplement,Range("B4:B11")(1).Value
Josh Brown a donné (dans un commentaire) ce que je pense est la meilleure réponse:
Quand je ne connais pas les limites de la zone fusionnée, j'obtiens la valeur avec
Ce qui est utile dans VBA lorsque, par exemple, vous êtes en boucle par le biais de fichiers susceptibles de contenir des cellules fusionnées de l'inconnu, de plages, de sorte que vous pouvez être beaucoup plus général avec cette méthode. Merci Josh!
Cela peut être fait en 2 étapes:
D'abord nommer la plage de cellules fusionnées; mettez en surbrillance la cellule fusionnée ensuite, allez sur la Barre de Ruban:
Formulas Tab --> Define Name;
Assurez-vous il n'y a pas d'espaces dans le nom. Exemple:
defined_Name
. Aller à la cellule souhaitée, vous souhaitez voir la sortie/résultat. Dans la cellule, type:=defined_Name
.Appuyez sur entrée parce que vous avez terminé.