使用形状隐藏/取消隐藏按钮位置旁边的行

时间:2019-09-07 04:41:39

标签: excel vba button

我想要一个按钮,该按钮将隐藏其下面的2行。这个想法是创建一个可以复制到许多位置的按钮,并将其下面的两行隐藏起来。

我创建了一个按钮,将其隐藏在其下方的2行中。但是,当我复制按钮时,所有按钮都隐藏/取消隐藏相同的行。不是相对于自己的行。我不知道为什么。

include

预期结果是我在3个位置都有一个按钮

  • 在A4中隐藏第5&6行
  • 在A7中隐藏第8&9行
  • 在A10中隐藏第11和12行

当前发生的事情是,无论我按哪个按钮,它都只会隐藏和取消隐藏第5和第6行

1 个答案:

答案 0 :(得分:0)

建议直接使用对象。 试试这个:

Public Sub ShowHideWeeksData()
Const kShow As String = "Show This Week"
Const KHide As String = "Hide This Week"
Dim sp As Shape, rg As Range, blHide As Boolean
    Set sp = ActiveSheet.Shapes(Application.Caller)
    With sp
        Set rg = .TopLeftCell.Offset(1).Resize(2)
        blHide = (.DrawingObject.Caption = KHide)
        rg.EntireRow.Hidden = blHide
        .DrawingObject.Caption = IIf(blHide, kShow, KHide)
    End With
    End Sub

注意:此行sp.TextFrame2.TextRange.Text不适用于我,因此改用了sp.DrawingObject.Caption

经过测试,所有复制的buttons将指向相同的Procedure,无论每个按钮的名称如何。