Recorriendo celdas, construyendo un rango en VBA
Pregunta
Estoy buscando recorrer las celdas y crear un rango para un gráfico.Mi principal problema es que no sé cómo incorporar la 'i' al rango.Ejemplo:
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
Solución
Probablemente necesite tener:
.SeriesCollection(1).Values = wb.Worksheets("Summary-Account").Range("E" & i & ":G" & i & ", I" & i & ":K" & i & ", M" & i & ":O" & i & ", Q" & i & ":S" & i)
No es la línea más clara, pero debería darte el patrón para pasar.Hay otros problemas como necesitando un "siguiente I" en lugar de un "bucle" y no i= i + 1, pero en mi computadora, esto me dio una gráfica con múltiples series en él.
Otros consejos
Tú no incrementar manualmente
i
.
La funciónfor loop
ya lo hace por ti.
Entonces eliminar esoi = i + 1
.Ahora, para hacer tu
Range
funcionar, necesitarías que su "" fuera algo como esto:Range("E" & i & ":G" & i
).No entiendo muy bien qué intenta lograr al intentar tomar datos de 6 columnas diferentes.Ver rango para mayor información.
try
.SeriesCollection(1).Values = Range("E1").Resize(20,1).Value
Esto copiará todos los valores en una matriz para su uso en la colección serie
Use Next i
en lugar de Loop
;y deshacerse de ese i = i+1
.
Además, use "E" & i & ":G" & i
en lugar de "E&i:G&i"
Un paso más allá, 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.
Esto no es ni siquiera es válido en la sintaxis, la palabra clave Loop
se asocia con otra palabra clave Do
, y For
se asocia con Next