旋转栏/输入按钮可见性

时间:2018-01-29 20:15:53

标签: excel vba

所以我一直在制作一个电子表格,我将其用作多个电子表格的模板,我已经完成了大部分模板,但我想添加一个涉及旋转栏的功能。

目前我显示了100个输入按钮,我知道模板的所有可能用途都不需要100个按钮,我只包含100个最大值。

我希望添加1到100个旋转栏,以便根据与旋转栏关联的数字自动显示/隐藏按钮。

我应该没有问题找出如何隐藏按钮或显示按钮,但我无法找出正确的代码,让按钮在1 - 100之间可见。

Sub LocNum ()
    Dim i As Integer
    Dim n As Integer
    n = Worksheets(1).Cell
    For i = 1 To n

这就是我能得到的,所以如果n等于37,它应该只有37个按钮可见。

我从我之前输入的内容中获取了我的代码,之后我休息了很长时间,这是代码。

Sub Populate()
    Dim t As Integer
    Dim i As Integer
    Dim a As String
    t = ActiveWorkbook.Sheets.Count - 1
    i = 0

    For i = 2 To t
        a = i - 1
        If (ActiveSheet.Shapes("" + "btn.index" & i).Visible = True) Then
            ActiveSheet.Shapes("" + "btn.index" & i).Select
            Selection.OnAction = "" + "Location" & a + ""
            Selection.Characters.Text = ActiveWorkbook.Worksheets(i).Name
        Else
            Exit Sub
        End If
    Next i

End Sub

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

不完全确定您的工作流程,但这可以帮助您根据索引(我不推荐)或按钮名称显示/隐藏按钮。你只需要调用这个Sub提供要显示的按钮数量,其余的(索引/名称高于数字)将被隐藏。

我会让你玩OnAction。

Option Explicit

Sub ShowButtonsUpTo(ByVal ButtonCount As Long)
    Dim oButton As Button ' or Object

    For Each oButton In Worksheets(1).Buttons
        With oButton
            ' Based on Index (not recommend):
            .Visible = (.Index <= ButtonCount)
            ' Based on Name (button name):
            If InStr(1, .Name, "btn.index", vbTextCompare) = 1 Then
                .Visible = (CLng(Replace(.Name, "btn.index", "")) <= ButtonCount)
            End If
        End With
    Next oButton

End Sub