请参阅工作表中框架中的控件

我有Class Module ,我用它来处理Click事件。 我使用Macro3()来链接事件与帧T1上的button,它的工作原理。

我有一百个框架(ActiveX控件)的名称,如T1,T2,T3...

我如何参考每个框架中的控件? 我试过ActiveSheet.Shapes("T1").Controls("title_pic_tog") 。 它不起作用。 如果我们可以做这个工作,那么我可以使用一个variables来replaceShapes("t1")

 Option Explicit Public WithEvents cBox As MSForms.ToggleButton Private Sub cBox_Click() msgbox("clicked") 'End If End Sub Sub Macro3() Set title_pic_tob_Event_Coll = New Collection Set title_pic_tob_Event = New titlepictog Set title_pic_tob_Event.cBox = ActiveSheet.t1.Controls("title_pic_tog") title_pic_tob_Event_Coll.Add title_pic_tob_Event End sub 

在class级模块(说class级Class1

 Option Explicit Public WithEvents cBox As MSForms.ToggleButton Private Sub cBox_Click() MsgBox ("clicked") End Sub 

在一个模块中

 Dim TBArray() As New Class1 Private Sub Sample() Dim i As Integer, FrmBCtl As OLEObject, TBCtl As Variant Dim ws As Worksheet '~~> Change this to the relevant worksheet Set ws = Sheet2 '~~> Loop through all objects in the worksheet For Each FrmBCtl In ws.OLEObjects '~~> Check if the oleobject is a frame If TypeName(FrmBCtl.Object) = "Frame" Then '~~> Loop through all controls in the frame For Each TBCtl In FrmBCtl.Object.Controls i = i + 1 ReDim Preserve TBArray(1 To i) Set TBArray(i).cBox = TBCtl Next TBCtl End If Next FrmBCtl Set FrmBCtl = Nothing Set TBCtl = Nothing End Sub 

截图 在这里输入图像描述