请参阅工作表中框架中的控件
我有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
截图