我正在尝试编写一个代码,根据单元格值显示多个按钮
我有10个命令按钮都是不可见的,我只想显示第一个x x是“Sheet1”中单元格“A1”的值(将从1到10) 命令按钮名称是默认名称(CommandButton4,CommandButton5,...,CommandButton13)
注意:我正在处理工作表而不是用户表单
这是我的代码,但我需要更短,更专业和更有效的
Private Sub CommandButton15_Click()
Dim i As Long
Dim CommandButton() As Variant
Application.ScreenUpdating = False
CommandButton = Array("CommandButton4", "CommandButton5", "CommandButton6", "CommandButton7", "CommandButton8", "CommandButton9", "CommandButton10", "CommandButton11", "CommandButton12", "CommandButton13")
For i = LBound(CommandButton) To LBound(CommandButton) + Sheet1.Range("A1").Value - 1
Sheet1.Shapes(CommandButton(i)).Visible = True
Next i
Application.ScreenUpdating = True
End Sub
需要你的帮助PLZ
答案 0 :(得分:2)
如评论中所述,您应该重命名按钮。这只会让事情变得更容易。
例如,你可以将它们命名为“btn1”,“btn2”,“btn3”.... 你的代码还可以,我看不到重大错误。我不知道你以后是否想要添加新按钮。
如果是这样,我会推荐更通用的东西。如果您将按钮重命名为“btn1”...那么您可以使用以下内容:
Private Sub CommandButton15_Click()
Dim btn As OLEObject, name As String, i As Long
i = Sheets(1).Range("A1").Value + 1
For Each btn In ActiveSheet.OLEObjects
name = btn.name
If btn.OLEType = xlButtonOnly And InStr(name, "btn") = 1 Then
If Int(Right(name, Len(name) - 3)) < i Then
btn.Visible = True
Else
btn.Visible = False
End If
End If
Next
End Sub
所以你可以添加新的按钮,用“btn ..”模式命名它们,你不必更改你的代码。