下面的宏按工作表列出了所有的图表编号,但它对它们进行了排序,这不是图表在工作表中的显示方式。
Sub ListChartNames()
Dim Cht As ChartObject
Dim i As Integer
i = 1
For Each Cht In ActiveSheet.ChartObjects
Cells(i, 1) = Cht.Chart.Name
i = i + 1
Next Cht
End Sub
例如,我在E6:L17中有一个图表(我们称之为图表1),在N6:U17中有另一个图表(我们称之为图表11)。然后,我向下移动到E19:L30中的两个图表(我们称之为图表400)和N19:U30中的另一个图表(我们称之为图表2)。然后,我向下移动到E32:L43中的两个图表(我们称之为图表3)和N32:U43中的另一个图表(我们称之为图表12)。然后,我向下移动到E45:L56中的一个图表(我们称之为图表13)。然后,我返回到E58:L69中的两个图表和N58:U69中的另一个图表(我们称之为图表15和图表16)等等...
以上图表都在E列到U列。但是在Y列到AO列中有另一组相同的模式,在AS列到BI列中也有,等等。
我有像500图表,我想一个宏来列出他们开始在第一组列(E到L),但他们从上到下列出,让右。
因此,基于上述内容的结果将针对列F到U图表1图表11图表400图表2图表3图表12图表13图表15图表16
上面的宏以排序的顺序列出了图表,这不是我所需要的。
这也没有回答以下问题:Select chart object based on position in sheet (VBA)
2条答案
按热度按时间92dk7w1h1#
这能给予你的需要吗
jei2mxaa2#
这是一种替代方法,它仍然没有使用排序算法,而是使用了一种变通方法(确实浪费了一点时间,但是),这比扫描工作表中的每个单元格要快得多: