【问题标题】:VBA copy appearance functionVBA复制外观功能
【发布时间】:2013-07-01 05:30:03
【问题描述】:

以下代码用于创建气泡饼图(饼图为气泡的气泡图)。它递归地将饼图复制到气泡图中。我的问题是,使用这种方法,最终的饼图看起来有点椭圆——不是真的圆。我怀疑的一个问题与某种格式有关。

Sub PieMarkers()

Dim chtMarker As Chart
Dim chtMain As Chart
Dim intPoint As Integer
Dim rngRow As Range
Dim lngPointIndex As Long
Dim thmColor As Long
Dim myTheme As String


Application.ScreenUpdating = False
Set chtMarker = ActiveSheet.ChartObjects("chtMarker").Chart
Set chtMain = ActiveSheet.ChartObjects("chtMain").Chart

Set chtMain = ActiveSheet.ChartObjects("chtMain").Chart
Set rngRow = Range(ThisWorkbook.Names("PieChartValues").RefersTo)

For Each rngRow In Range("PieChartValues").Rows
    chtMarker.SeriesCollection(1).Values = rngRow
    ThisWorkbook.Theme.ThemeColorScheme.Load GetColorScheme(thmColor)
    chtMarker.Parent.CopyPicture xlScreen, xlPicture
    lngPointIndex = lngPointIndex + 1
    chtMain.SeriesCollection(1).Points(lngPointIndex).Paste
    thmColor = thmColor + 1
Next

lngPointIndex = 0

Application.ScreenUpdating = True
End Sub

Function GetColorScheme(i As Long) As String
Const thmColor1 As String = "C:\Program Files\Microsoft Office\Document Themes 15\Theme Colors\Blue Green.xml"
Const thmColor2 As String = "C:\Program Files\Microsoft Office\Document Themes 15\Theme Colors\Orange Red.xml"
    Select Case i Mod 2
        Case 0
            GetColorScheme = thmColor1
        Case 1
            GetColorScheme = thmColor2
    End Select
End Function

我发现如果双击特定的ubble选择格式数据点然后进入填充和拉伸选项(仅在选择图片填充时才可能),问题是可以解决的。问题是我的数据正在发生变化,我需要一种动态的方式将其实现到上述代码中。有没有办法做到这一点?

我这里指的是这个控制台http://s1.directupload.net/file/d/3300/7dlimc3g_png.htm

【问题讨论】:

  • 嗨,Timon——我认为这样做是可能的。到办公室后,我会尝试一些事情。
  • 请不要破坏您自己的帖子。谢谢!

标签: vba excel


【解决方案1】:

我认为如果您的饼图不是一个完美的方形,这可能是问题所在。我可以复制您的问题,即使我检查填充选项,偏移量都是0%。我可以调整它们,但这不是一种可靠的方法。所以,我认为最好的选择是确保您的饼图.Parent 是方形的。为此,在您 CopyPicture 之前,将其 Height 设置为等于其 Width,如下所示:

chtMarker.Parent.Height = chtMarker.Parent.Width  '## Ensure the chartObject is a square, so it will not be distorted when pasted.
chtMarker.Parent.CopyPicture xlScreen, xlPicture

【讨论】:

  • 如何更改Point 颜色的问题已在 StackOverflow、here is one methodhere is another similar method 上得到解答。您当然需要为 8 x 3 = 24 点中的每一个点分别分配颜色。
  • 我可能会写一个不同的函数。 Points 只是一个 Collection 对象,因此您可以像遍历 Worksheets 一样遍历它们(这也是一个 Collection 对象。您需要遍历每个图表中的点,并应用颜色基于点索引和图表索引值。
  • 是的,这对你来说应该是一个新问题。 “我如何迭代系列中的点并为它们应用不同的颜色?”您至少应该尝试自己开始这部分代码。通过这种方式,您将获得更好的答案。
  • 不在这里我不能。如果您需要帮助,请公开发布问题,以便 Stack 上的每个人都可以帮助您,而不是提出一系列无休止的后续问题,只有我自己才能看到。这对我不公平。这些 cmets 与您原始问题的范围无关。请提出一个描述新问题的新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-28
  • 2023-01-19
相关资源
最近更新 更多