excel 在一个变量下存储多个形状

gcxthw6b  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(99)

VBA新手,寻求帮助。
我选择几个形状,执行修改,然后我想再次选择相同的形状。我期待着存储在一个变量下的原始选定的形状。

Sub TEst()
   ' Call format_select
    'Call Resize_selected_row_Click
Dim S As Shape
    On Error Resume Next
Set S = ActiveSheet.Shapes(Selection)
For Each shp In Selection
    shp.Select
    'Call format_select
Next shp

S.Select
On Error GoTo 0
End Sub
thtygnil

thtygnil1#

我喜欢在这种情况下使用Dictionary,但使用array也可以得到同样的结果,但我不喜欢担心数组大小。
顺便说一下,我在这里使用选择strGroup = Selection.Name,我不推荐使用Selection可能会给你带来一些问题。

Sub LoopThroughGroupShapes()

    Dim shpGroup As Shape
    Dim strGroup As String
    Dim shp As Shape
    
    Dim vDicShapes As Object
    
    Set vDicShapes = CreateObject("Scripting.Dictionary")
    strGroup = Selection.Name
    
    Set shpGroup = ActiveSheet.Shapes(strGroup)
    
    For Each shp In shpGroup.GroupItems
        'Debug.Print shp.Name
        vDicShapes.Add shp.Name, shp
    Next shp
    
    'Debug.Print vDicShapes.Count, vDicShapes("Rectangle 6").Name
    
End Sub

有了这个,你可以去调用形状的名称来访问,然后与:vDicShapes("Rectangle 6").name和操作直接从字典。你可以复制字典,从字典中删除一些形状,并执行一些任务。
我将离开一个网站,提供有关VBA中字典的更多信息:https://excelmacromastery.com/vba-dictionary/

相关问题