Vba 如果某个范围包含形状';姓名

Vba 如果某个范围包含形状';姓名,vba,excel,shapes,Vba,Excel,Shapes,我是这个论坛的新手,仍然在学习VBA 我的工作表上有几个形状(美国地图——每个州都有自己的形状)。地图上的小圆圈代表某些城市。我想在几个城市之间有一个直接的连接器。虽然有许多连接器,但我希望根据我在A8:A10范围内的选择,一次最多显示三个连接器。如果某个连接器的名称不在范围内,则该连接器应不可见。您的语句应为: .Visible=msoTrue或.Visible=msoFalse If yourCondition Then Dim oActive As Worksheet

我是这个论坛的新手,仍然在学习VBA

我的工作表上有几个形状(美国地图——每个州都有自己的形状)。地图上的小圆圈代表某些城市。我想在几个城市之间有一个直接的连接器。虽然有许多连接器,但我希望根据我在A8:A10范围内的选择,一次最多显示三个连接器。如果某个连接器的名称不在范围内,则该连接器应不可见。

您的语句应为: .Visible=msoTrue或.Visible=msoFalse

If yourCondition Then
   Dim oActive As Worksheet     
   Set oActive = ActiveSheet
   oActive.Shapes("CharlotteTruck").Visible = msoTrue
End if

编辑:

这是您可以使用的条件:

 If Not Intersect(Target, Range("A8:A10")) Is Nothing Then
    'condition to run when not clicked in range
 Cancel = True 'This line can be remove if not needed 
    'condition to run if cell in range was clicked
 End If
让我知道这是否适合您

您的声明应该是: .Visible=msoTrue或.Visible=msoFalse

If yourCondition Then
   Dim oActive As Worksheet     
   Set oActive = ActiveSheet
   oActive.Shapes("CharlotteTruck").Visible = msoTrue
End if

编辑:

这是您可以使用的条件:

 If Not Intersect(Target, Range("A8:A10")) Is Nothing Then
    'condition to run when not clicked in range
 Cancel = True 'This line can be remove if not needed 
    'condition to run if cell in range was clicked
 End If

让我知道这是否适用于您

您可以使用下面的代码。假设形状和范围在同一张纸上

Public Sub Test()

    ActivateShapes ActiveSheet.Range("A8:A10")

End Sub

Public Sub ActivateShapes(rInputRange As Range)

    Dim rCell As Range

    On Error Resume Next

    For Each rCell In rInputRange
        rInputRange.Parent.Shapes(rCell).Visible = msoTrue
    Next rCell

End Sub

您可以使用下面的代码。假设形状和范围在同一张纸上

Public Sub Test()

    ActivateShapes ActiveSheet.Range("A8:A10")

End Sub

Public Sub ActivateShapes(rInputRange As Range)

    Dim rCell As Range

    On Error Resume Next

    For Each rCell In rInputRange
        rInputRange.Parent.Shapes(rCell).Visible = msoTrue
    Next rCell

End Sub

谢谢你的回复。我的情况有点问题。如何让Excel引用A8:A10的范围?我对VBA语法有点不确定。对不起,还有一个问题。我有30多个形状,我想以这种方式格式化,是否可以通过查找形状名称来缩短代码,而不是对每个特定形状进行编码?您在这个范围内寻找什么条件?换句话说,您希望形状何时可见,何时不可见?如果一个形状可见,它们是否都可见?对不起,让我澄清一下:工作表上有几个形状(美国地图。地图上的小圆圈代表某些城市。我希望在几个城市之间有直接的连接符。虽然有许多连接符,但我希望根据我在A8:A10范围内的选择,一次最多显示三个。如果某个连接符未在该范围内命名,则它应该是不可见的e、 我添加了一个新的编辑,以向您展示如何执行该条件。如果此答案对您有效,请单击此答案旁边的绿色复选标记,将您的问题标记为已回答。感谢您的回答。我对该条件有点问题。我如何让Excel引用A8:A10的范围?我对VBA语法有点不确定x、 对不起,还有一个问题。我有30多个形状,我想用这种方式格式化。是否可以通过查找形状的名称来缩短代码,而不是对每个特定形状进行编码?您在这个范围内寻找什么条件?换句话说,您希望形状何时可见,何时不可见ible?如果一个形状可见,它们是否都可见?对不起,让我澄清一下:工作表上有几个形状(美国地图。地图上的小圆圈代表某些城市。我希望在几个城市之间有直接的连接符。虽然有许多连接符,但我希望根据我在A8:A10范围内的选择,一次最多显示三个。如果某个连接符未在该范围内命名,则它应该是不可见的e、 我添加了一个新的编辑,以向您展示如何执行此条件。如果此答案对您有效,请单击此答案旁边的绿色复选标记,将您的问题标记为已回答。发布您尝试的解决方案。尝试从浏览工作表事件开始。现在,您的问题缺少详细信息,与主题无关。发布您尝试的解决方案。请尝试从浏览工作表事件开始。现在,您的问题缺少详细信息,因此与本主题无关。