vba - 如何使用 R for 循环定义范围来创建图形

标签 vba excel for-loop charts

我的 Excel 中有一个数据集,如下所示:

MA  M1  M2  T1  T2  W1  W2  Th1 Th2  F1  F2
100 1   2   2   1   2   0   0   2   2   1
100 2   0   2   1   2   2   1   2   2   0
101 1   3   0   1   1   0   1   0   1   1
101 0   2   1   1   0   1   1   1   1   1
102 1   1   1   2   0   1   0   0   2   2
102 1   2   0   1   1   0   1   1   0   3

我正在尝试为每个代码 (100,101,102) 创建一个柱形图,其中每个代码将有 2 个数据集,水平值将是 m1、m2、t1 等。 所以最后我想要 3 个柱形图。我正在尝试使用 for 循环在 VBA 中创建这些图表,这是我一直在尝试的:

Sub MA()
   Dim i  As Integer
    Dim row1 As Integer, row2 As Integer
     For i = 1 To 6 Step 2
        Dim MAChart As Chart
        Set MAChart = ActiveSheet.Shapes.AddChart.Chart
         With MAChart
         row1 = i + 1
         row2 = i + 2
         .ChartType = xlColumnClustered
         .SetSourceData Source:=ActiveSheet.Range("Q& row1 & : & Z & row2")
         End With
    Next i
End Sub

我不断收到“应用程序定义或对象定义”错误。我在定义每个图表的范围时遇到困难,因为它根据 i 变化。我很想找到一种干净的方法来使用 for 循环制作一系列图表,而无需每次为每个不同的图表重新定义范围/数据集。有谁知道有什么好方法吗?

最佳答案

下面将整个“范围”视为一个不等于范围的字符串

Range("Q& row1 & : & Z & row2")

尝试使用下面的方法,您不需要 row1 和 row2。请注意我如何构建有效范围的字符串

Range("Q" & 1+i & ":Z" & 2+i)

与您的代码一起使用,请注意,我还将您的“Dim”移出循环,这不需要创建每个循环,但需要“设置”每个循环

Sub MA()
   Dim i  As Integer
   Dim MAChart As Chart
    Dim row1 As Integer, row2 As Integer
     For i = 1 To 6 Step 2
        Set MAChart = ActiveSheet.Shapes.AddChart.Chart
         With MAChart
         .ChartType = xlColumnClustered
         .SetSourceData Source:=ActiveSheet.Range("Q" & i & ":Z" & 1+i)
         End With
    Next i
End Sub

您可能还需要考虑上面图表的位置,这将使它们全部重叠。

关于vba - 如何使用 R for 循环定义范围来创建图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31520031/

相关文章:

excel - 如何使用 VBA 自动将单词添加到多列中的文本末尾?

excel - range.copy 目标 "A1"与 "Cells(1,1)"Excel/VBA

excel - VBA将文本文件设置为读/写然后返回只读?

excel - Wbk 中已删除的名称仍然存在并引用不存在的位置,导致 Excel 速度变慢

php - 逗号在for循环的第一个参数中起什么作用?

excel - 为什么 Word 有 Application.Activate 方法,而 Excel 没有?

excel - 在 Excel VBA 中制作自定义集合

java - 错误: Type mismatch: cannot convert from HSSFWorkbook to Workbook

c - 我无法使用 scanf 将名称输入到 char 数组中

for-loop - lua中如何跳出for循环