Excel:根据形状的内容隐藏一组对象

时间:2013-10-02 23:52:53

标签: excel excel-vba vba

在Excel中,我创建了一组形状,包括一些复选框和一个白色矩形。我把它们命名为“grouponeone”。我还创建了一个名为“oneonebutton”的矩形

我想要发生的是,当矩形“oneonebutton”处于非活动状态时,文本框架会引用一个命名单元格(称之为“namedcell”)。单击时,它将更改为“选择选项”,组将显示在按钮下方。单击时,复选框会在图形上绘制散点值。再次单击时,它将恢复为初始状态。

到目前为止,这是我的代码,但是我被卡住并且是VBA的新手,我一直在玩弄运气很多。非常感谢。

Sub checkboxmacro()

If SelShp.TextFrame2.TextRange.Characters.Text = Range("namedcell") Then
    group11.Visible= False
    SelShp.TextFrame2.TextRange.Characters.Text = "Select Options"
Else
    group11.Visible = True
    SelShp.TextFrame2.TextRange.Characters.Text = Range("experimentoneonename")
End If

End Sub

提前干杯

1 个答案:

答案 0 :(得分:1)

到目前为止你所看到的对我来说是好的(下面有一些建议的改动)。

Sub Tester()
    Const STR_SELECT As String = "Select Options (click here when done)"
    Dim shp As Shape, tr As TextRange2, grp As Shape

    Set shp = ActiveSheet.Shapes(Application.Caller)
    Set tr = shp.TextFrame2.TextRange
    Set grp = ActiveSheet.Shapes("grpOne")

    If tr.Characters.Text <> STR_SELECT Then
        tr.Characters.Text = STR_SELECT
        grp.Visible = True
    Else
        tr.Characters.Text = ActiveSheet.Range("namedcell")
        grp.Visible = False
    End If

End Sub

如何继续进行可能部分取决于您拥有的复选框类型。

例如:如果您使用表单复选框,那么您可以将它们全部链接到类似下面的子项(根据复选框的名称切换您执行的操作)

Sub Checker()
    Dim ac As String

    ac = Application.Caller
    Debug.Print ac, ActiveSheet.CheckBoxes(ac).Value
    'do something based on checkbox name and value...

End Sub