我有以下问题。我的工作表中有很多以结构化方式命名的标签(Label1、Label2、...、Label9),并为所有标签分配了鼠标移动事件宏。我想获取表A1:A9中的第i个值,其中“i”是当前“触摸”的标签号。有没有一种简单的方法可以在 mouse_move 事件(或其他一些事件,如 Change_event)期间获取标签的名称。它看起来类似于这个
Private Sub Label47_MouseMove(ByVal Button As Integer, ByVal Shift As Integer,
ByVal X As Single, ByVal Y As Single)
Dim label_name as String
Dim which_one as Integer
Dim val as Integer
label_name = "something like ActiveLabel.Name"
which_one = CInt(right(label_name,1))
val = Cells(which_one,1).Value
rest code....
End Sub
谢谢你的帮助
您可以使用类模块和WithEvents
做你需要做的事。以下代码应该让您朝着正确的方向前进:
'weMouseMove class module:
Private WithEvents mLbl As MSForms.Label
Private mLabelColl As Collection
Sub LabelsToTrack(Labels As Variant)
Set mLabelColl = New Collection
Dim i As Integer
For i = LBound(Labels) To UBound(Labels)
Dim LblToTrack As weMouseMove
Set LblToTrack = New weMouseMove
Dim Lbl As MSForms.Label
Set Lbl = Labels(i)
LblToTrack.TrackLabel Lbl
mLabelColl.Add LblToTrack
Next i
End Sub
Sub TrackLabel(Lbl As MSForms.Label)
Set mLbl = Lbl
End Sub
Private Sub mLbl_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
MsgBox mLbl.Name & ": " & mLbl.Caption
End Sub
在您的用户表单代码模块中:
Dim MouseMove As New weMouseMove
Private Sub UserForm_Initialize()
MouseMove.LabelsToTrack Array(Me.Label1, Me.Label2)
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)