在 Excel 所需单元格中弹出一个形状

Val*_*ant 4 excel vba

我一直在尝试在双击单元格时弹出一个形状,并且我编写了一个代码,但它对我不起作用。

我想要的是,每当我双击一个单元格时,Range("A1"A100000")形状就会弹出,否则它会被隐藏。

我的代码:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     If Intersect(Target, Range("A1:A5000")) Is Nothing Then
         ActiveSheet.Shapes("Group 4").Visible = True
     End If
End Sub
Run Code Online (Sandbox Code Playgroud)

Sid*_*out 6

每当 DoubleClick 在单元格上时,我一直试图弹出一个形状,我写了一个代码,但它对我不起作用。

您必须使用If Not Intersect来检查用户是否点击了A1:A5000

这是你正在尝试的吗?

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("A1:A5000")) Is Nothing Then
        Shapes("Group 4").Visible = True
    Else
        Shapes("Group 4").Visible = False
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

编辑

非常感谢它工作得很好,但它没有移动单元格。我的意思是当我点击单元格 A100 时,它仍然保持原样。– Mento 4 分钟前

那是因为您没有在代码中移动形状。这是你正在尝试的吗?

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("A1:A5000")) Is Nothing Then
        With Shapes("Group 4")
            .Top = Range("B" & Target.Row).Top
            .Left = Range("B" & Target.Row).Left
            .Visible = True
        End With
    Else
        Shapes("Group 4").Visible = False
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

注意:如果你不希望光标闪烁,当你双击的A1:A5000,然后使用Cancel = True中的第一部分If

  • 是的,这是因为您没有在代码中移动形状。那么当你点击A100时,你想显示B100中的形状吗? (2认同)