如何在VBA中正确复制形状的格式

问题描述 投票:0回答:1

我有一个包含各种形状的 Excel 电子表格。形状根据每件作品的状态而变化。我有一个 VBA 宏,可以搜索每件作品的状态并相应地更改颜色。在宏的末尾,我发出一个命令,让其中一个片段复制与另一个片段相同的格式。

但是,复制到该片段的格式与要复制的片段之前的格式相同。例如,A 块是红色的。运行宏时,它会变成黄色。在代码的末尾,我要求它将格式从 A 块复制到 B 块。B 块不是变成黄色,而是变成红色,这意味着该块之前的状态始终被复制。即使我创建另一个子并运行代码来复制格式,也会发生同样的事情,它会复制旧的格式。在这种情况下,是否有任何我不知道的 Excel 内存分配特征?

用于复制格式的代码

`Set shapeOrigem = ws.Shapes("30090")
 Set shapeDestino = ws.Shapes("30090b")
 shapeDestino.Fill.ForeColor.RGB = shapeOrigem.Fill.ForeColor.RGB`
excel vba macros ms-office
1个回答
0
投票

如果问题出在颜色上,则将颜色保存为

long
变量并将其应用到最后一个形状。它应该有效并且易于维护和遵循。 像这样的东西:

Sub TestMe()

    Dim preferredColor As Long
    Dim ws As Worksheet, shapeOrigem As Shape, shapeDestino As Shape
    
    Set ws = ActiveSheet
    Set shapeOrigem = ws.Shapes("30090")
    preferredColor = shapeOrigem.Fill.ForeColor.RGB
    'a lot of other code
    Set shapeDestino = ws.Shapes("30090b")
    shapeDestino.Fill.ForeColor.RGB = preferredColor

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.