VBA动态添加事件
我想做一个九宫格,每个单元格都是由Label动态生成,我想给Label添加鼠标事件,可写完了以后发现只有最后一个单元格有事件,求教各位高手怎么搞定?
定义事件的类
窗体代码
定义事件的类
Private WithEvents m_Cell As MSForms.Label
Private m_Form As myframe
Public Sub AddCell(ByVal frmLayout As myframe, ByVal cell As MSForms.Label)
Set m_Cell = cell
Set m_Form = frmLayout
End Sub
Private Sub m_Cell_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
m_Form.CellMouseDown m_Cell, Button, Shift, X, Y
End Sub
窗体代码
Private myCells As Collection
Public Sub UserForm_Initialize()
SetRoomsLayout
End Sub
Private Sub SetRoomsLayout()
Set myCells = New Collection
Dim vLeft As Integer, vTop As Integer, tLeft As Integer, tTop As Integer
Dim i As Integer, j As Integer, key As String
tLeft = (myframe.Width - 50 * 3) / 2
tTop = (myframe.Height - 50 * 3) / 2
For i = 0 To 2
For j = 0 To 2
key = i * 100 + j
vLeft = 0
vTop = 0
Dim lblFix As Label
Set lblFix = myframe.Controls.Add(ProgID_Label, "lblFix_" & key, True)
If (i <> 0) Then
vLeft = 50 * i
End If
If (j <> 0) Then
vTop = 50 * j
End If
With lblFix
.Height = 50
.Width = 50
.Left = vLeft + tLeft
.Top = vTop + tTop
.TextAlign = fmTextAlignCenter
.BackStyle = fmBackStyleOpaque
.BorderStyle = fmBorderStyleSingle
.SpecialEffect = fmSpecialEffectFlat
End With
Dim cell As New clsCell
cell.AddCell vForm, lblFix
vForm.AddCell key, cell
Next
Next
End Sub
Public Sub AddCell(ByVal vKey As String, ByVal vCell As clsCell)
myCells.Add vCell, vKey
End Sub
Public Sub CellMouseDown(ByVal cell As MSForms.Label, ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
MsgBox X
End Sub
...全文
相关推荐
自动添加Excel控件及事件代码.rar
自动添加Excel控件及事件代码.rar,有时需要在工作表或者窗体中动态添加控件,并且为新添加的控件添加相关的事件代码,这些都可以利用VBA代码实现。
VBA_为列表框添加列表项的方法.rar
VBA_为列表框添加列表项的方法.rar
Excel VBA创建动态图表
NULL 博文链接:https://jacky2007.iteye.com/blog/369609
Excel-VBA宏编程实例源代码-制作原创事件以获取所需的动态信息.zip
Excel-VBA宏编程实例源代码-制作原创事件以获取所需的动态信息.zip
vba制作动态下拉菜单0919
vba制作动态下拉菜单0919


Office开发/ VBA
