我有Class Module,我使用它来处理Click事件。我使用Macro3()将事件与框架T1上的按钮链接起来,它可以工作。
我有上百个框架(ActiveX控件),其名称类似于T1,T2,T3...。
如何引用每个帧中的控件?我试过ActiveSheet.Shapes("T1").Controls("title_pic_tog")。它不起作用。如果我们能做到这一点,那么我可以使用一个变量来替换Shapes("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发布于 2017-06-03 07:45:00
在类模块中(例如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截图

https://stackoverflow.com/questions/44341254
复制相似问题