代码之家  ›  专栏  ›  技术社区  ›  SteveB

从所有线条中删除阴影

  •  0
  • SteveB  · 技术社区  · 9 年前

    我刚刚继承了一个绘制组织结构图的Excel应用程序。每个形状由一个 Line

    但是,我需要删除添加每条线时绘制的阴影。如何获取 Lines 这样我就可以做

    Line.Shadow.Transparency = 1.0
    

    我有点vba新手:-)

    2 回复  |  直到 9 年前
        1
  •  0
  •   BruceWayne    9 年前

    这应该可以做到这一点——它在所有形状中循环,检查它们是否是一条线,然后移除阴影。

    Sub test()
    
    Dim ws As Worksheet
    Set ws = ActiveSheet
    
    Dim shapeObj
    For Each shapeObj In ActiveSheet.Shapes
        If shapeObj.Type = 9 Then
            Dim objName$
            objName = shapeObj.Name
            ws.Shapes.Range(Array(objName)).Shadow.Visible = msoFalse
        End If
    Next shapeObj
    
    End Sub
    

    编辑:结果是,根据OP,形状被分组,所以他用这个来获得:

    Sub RemoveLineShadows()
    For Each Shp In ORG.Shapes
        If Shp.Type = msoGroup Then
            For X = 1 To Shp.GroupItems.Count
                If Shp.GroupItems(X).Type = msoLine Then
                    Shp.GroupItems(X).Shadow.Transparency = 1
                End If
            Next X
        End If
    Next Shp
    End Sub
    
        2
  •  0
  •   Stephen Rauch Afsar Ali    6 年前
    Sub qqq()
    Dim x As Shape
        For Each x In ActiveSheet.Shapes
            x.Shadow.Visible = msoFalse
        Next
    End Sub