这就是我需要的: 我有一个切换按钮。我在Sheet1中写了一个小的VBA代码,使这个按钮变为绿色并显示标题" G"按下时,或转为黄色并显示标题" Y"郁闷的时候效果很好。
但我在Sheet1上有400个我需要应用此代码。我不知道如何使用UserForm,我无法弄清楚宏,手动输入代码既乏味又损坏了我的所有ComboBox条目。
Sub ToggleButton1_Click()
If ToggleButton1.Caption = “G” Then
ToggleButton1.Caption = "Y"
Else
ToggleButton1.Caption = "G"
End if
If ToggleButton1.Value = True Then
ToggleButton1.BackColor = vbGreen
Else
ToggleButton1.BackColor = vbYellow
End If
End Sub
我知道我刚刚输入的代码看起来很邋(我甚至不知道如何使用该论坛的格式)。但是任何指针都会受到赞赏。
答案 0 :(得分:0)
我的建议是创建一个类模块,将其命名为clsToggle
Option Explicit
Public WithEvents TGButton As ToggleButton
Private Sub TGButton_Click()
With TGButton
If .Caption = "G" Then
.Caption = "Y"
Else
.Caption = "G"
End If
If .Value = True Then
.BackColor = vbGreen
Else
.BackColor = vbYellow
End If
End With
End Sub
然后在普通模块中添加以下代码
Option Explicit
Dim TBTs() As New clsToggle
Sub Init_ToggleButtons()
Dim obj As OLEObject
Dim TGCount As Integer
TGCount = 0
For Each obj In ActiveSheet.OLEObjects
If TypeOf obj.Object Is ToggleButton Then
TGCount = TGCount + 1
ReDim Preserve TBTs(1 To TGCount)
Set TBTs(TGCount).TGButton = obj.Object
End If
Next
End Sub
运行Sub Init_ToggelButtons,所有Togglebuttons将对类模块中定义的click事件做出反应。 当然,请删除您可能已经为togglebuttons定义的代码。
编辑:每次打开工作簿时都需要运行Init_ToggelButtons。所以最好在模块中添加以下子
Sub Auto_open()
Init_ToggleButtons
End Sub