Comment fusionner plusieurs objets Range, dans l'un, pour l'utiliser comme source du Graphique
Je suis en train de faire un tableau avec plusieurs colonnes comme source de la zone.
En fait, je cherche à sélectionner des colonnes, où je me passer de certaines colonnes, et de les fusionner en une gamme. J'ai de l'installation d'une boucle, dans laquelle je crée une fourchette et ajouter l'adresse d'une chaîne de caractères, et les sépare par une virgule. Je suis sûr que ce est la façon dont Excel veut formaté.
MAIS, je n'arrive pas à créer une nouvelle gamme de cette chaîne.
J'espère que quelqu'un ici peut m'aider.
Je voudrais bien éviter, d'avoir à copier les colonnes d'une nouvelle feuille, et il suffit de marquer tous comme un éventail.
J'ai le code suivant, pour ce qui combiné gamme:
'Loops for each number of sections
For Z = 1 To Sheet1.txtNoSections
'Get gauge to use
Section = Workbooks(ThisWorkbook.Name).Worksheets(1).Cells(26 + Z, 6).Value
'Sets varibel for distance from root
Dist = Workbooks(ThisWorkbook.Name).Worksheets(1).Cells(26 + Z, 3).Value
'Get range to use
Set ChartRange = ActiveSheet.Range(ActiveCell, ActiveCell.Offset(rc, Section))
RangeString = RangeString & ChartRange.AddressLocal
If Z <> 1 Then
RangeString = RangeString & ","
End If
Next Z
J'ai ensuite essayé d'obtenir une nouvelle gamme avec quelque chose comme ça, mais pas de chance.
Dim ActualRange As Range
Set ActualRange = ActiveSheet.Range(RangeString)
Lors de l'impression de la RangeString, il ressemble à ceci:
$S$2$V$6181$S$2:$X$6181,$S$2:$Z$6181,$S$2:$AB$6181,$S$2:$AD$6181,$S$2:$AF$6181,$S$2:$AH$6181,$S$2:$AJ$6181,$S$2:$AL$6181,$S$2:$AN$6181,$S$2:$AP$6181,$S$2:$AR$6181,$S$2:$AT$6181,$S$2:$AV$6181,$S$2:$AX$6181,$S$2:$AZ$6181,$S$2:$BB$6181,$S$2:$BD$6181,$S$2:$BF$6181,$S$2:$BH$6181,$S$2:$BJ$6181,$S$2:$BL$6181,$S$2:$BN$6181,$S$2:$BP$6181
Semble être la même union ne.
,
)Pouvez-vous poster ce
RangeString
ressemble après vous exécutez le code? Vous pouvez mettre un Debug.Print RangeString
après Next Z
et vérifier la valeur. edit: Bon point Jmax 🙂Bien sûr, ma chaîne est terminée sur une virgule. Je l'ai changé, mais il ne parvient toujours pas quand j'essaie de définir la plage.
Je crois que c'est ce que vous essayez?
RangeString
devrait ressembler à ceci "S2:S6181,V2:V6181,X2:X6181,Z2:Z14,AB1:AB6181,........,BP2:BP6181"
Votre RangeString manque une première virgule pour délimiter la première Plage. Vous vraiment doit utiliser les fonctions standard telles que l'Union
OriginalL'auteur Nicolai | 2012-03-28
Vous devez vous connecter pour publier un commentaire.
Tel que discuté dans les commentaires ci-dessus, la meilleure façon de gérer cela est d'utiliser natif VBA fonctions telles que
Union
.Vous pouvez trouver plusieurs références sur la façon d'utiliser cette:
Encore, veuillez noter que vous pouvez répondre à votre propre question (il est même hautement recommandé) et de l'accepter. De cette façon, vous pouvez partager vos connaissances avec la communauté et la façon dont vous avez résolu votre problème avec votre propre code.
À mon humble avis, ce serait encore mieux que d'accepter ma réponse.
+1 sur
Union
🙂OriginalL'auteur JMax
Suivantes JMax d'orientation, j'ai fini à l'aide de l'Union.
C'est le code que j'ai fini avec.
Le premier passage dans la boucle, j'ai mis le CombinedRange à ma portée réelle, et l'exécute, j'ai de l'union.
OriginalL'auteur Nicolai