Parcourir les cellules, créer une plage en VBA
Question
Je cherche à parcourir les cellules et à créer une plage pour un graphique.Mon principal problème est que je n'arrive pas à comprendre comment intégrer le « i » dans la plage.Exemple:
Dim name As String
Dim newChart as Chart
Dim i as Integer
Set newChart = Charts.add
For i = 1 To 20
accName = Range("C" & i).Value 'I understand why this works.
With newChart
.ChartType = xlColumnClustered
.SeriesCollection.NewSeries
.SeriesCollection(1).Name = accName
.SeriesCollection(1).Values = wb.Worksheets("Summary-Account").Range("E&i:G&i, I&i:K&i, M&i:O&i, Q&i:S&i") 'How can I get this to work?
.SeriesCollection(1).XValues = wb.Worksheets("Summary-Account").Range("E3:G3, I3:K3, M3:O3, Q3:S3")
End With
i = i + 1
Loop
La solution
Vous devez probablement avoir:
.SeriesCollection(1).Values = wb.Worksheets("Summary-Account").Range("E" & i & ":G" & i & ", I" & i & ":K" & i & ", M" & i & ":O" & i & ", Q" & i & ":S" & i)
Pas la ligne la plus claire de jamais, mais devrait vous donner le motif à passer.Il y a d'autres problèmes comme ayant besoin d'un "prochain i" au lieu d'une "boucle" et non i= i + 1, mais sur mon ordinateur cela m'a donné un graphique avec plusieurs séries dessus.
Autres conseils
Toi ne le faites pas incrémenter manuellement
i
.
La fonctionfor loop
le fait déjà pour vous.
Donc retirer quei = i + 1
.Maintenant, pour faire votre
Range
fonctionne, vous auriez besoin que son "" ressemble à ceci :Range("E" & i & ":G" & i
).Je ne comprends pas très bien ce que vous essayez de réaliser en essayant de prendre des données de 6 colonnes différentes.Voir gamme pour plus d'informations.
essayer
.SeriesCollection(1).Values = Range("E1").Resize(20,1).Value
Ceci copiera toutes les valeurs en une matrice à utiliser dans la collection série
utiliser Next i
au lieu de Loop
;et débarrasse-toi de ça i = i+1
.Utiliser aussi "E" & i & ":G" & i
au lieu de "E&i:G&i"
Un pas de plus, en VBA
Dim i as double
For i = 1 to 100 Step 10 '<= Step 10 means when updating i, i = i + 10, and default value would be 1
Loop '<=breaks here, compile error is expected.
ce n'est même pas valable en syntaxe, le mot clé Loop
est associé à un autre mot-clé Do
, et For
est associée à Next