从子形状切换到组以便选择

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

我在整合两个独立的形状操作功能时遇到了一个真正的问题。

这个伪代码有效(为简单起见,我已经删除了一些功能)。它循环遍历N列中的对象名称列表,选择具有该名称的对象,然后将其着色。

Sub Macro1()
Dim shp As Shape
Dim clr As Range
Dim i As Integer
'
    Range("R2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Range("O2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    For i = 2 To 300
        Set clr = Sheets("SheetName1").Range("O" & i)
        Sheets("SheetName1").Shapes.Range(Array(Cells(i, 14))).Select
        Selection.ShapeRange.Fill.ForeColor.RGB = RGB(1, 2, 3) 'RGB actually calculated - just go with it!
    Next i
end sub

这个代码有效;这将选择上一个循环中对象的组名称,加上标题和图例对象,复制它并将其作为图片对象粘贴到另一个选项卡上:

sub Macro2()        
    Sheets("SheetName1").Shapes.Range(Array("WholeGroupItem")).Select
    Application.CutCopyMode = False
    Selection.Copy ' << ----
    Sheets("Destination1").Select
    Range("B7").Select
    ActiveSheet.Pictures.Paste.Select
End Sub

但是,当我将两者结合在一起并在一个宏中运行时,我在标记为' << ----的阶段报告错误:

groupobject类的复制方法失败

这几乎就像取消选择最后一个子对象并选择(复制)父组一样。我试过扔一个随机的range("A1").select,但它没有任何区别。

有任何想法吗?

excel vba shapes
1个回答
0
投票

我找到了解决方案。忍耐!

从字面上看。在最初的颜色调用之后,我添加了一个Calculate行来强制更新各种条件格式等 - 这无可否认我没有包含在原始帖子中,因为它显然不是问题。

现在全部排序。希望这可能有助于未来的其他灵魂。

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