私はLabelHandlerと呼ばれる新しいクラスを追加しました:私は次のように追加された新しいモジュールで
Option Explicit
Public WithEvents lbl As msforms.Label
Private Sub lbl_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim rng As String
rng = ActiveSheet.Shapes(lbl.Name).TopLeftCell.Address
Application.StatusBar = rng
End Sub
を:
Public myLabels As Collection 'Of LabelHandler
Sub init()
Dim ws As Worksheet
Dim myLabel As LabelHandler
Set myLabels = New Collection
For Each l In ActiveSheet.OLEObjects
Set myLabel = New LabelHandler
Set myLabel.lbl = l.Object
myLabels.Add myLabel
Next
End Sub
を今、私はラベルの上に私のカーソルを実行したときに、私は$ 11fの$を得ますステータスウィンドウで
EDIT For Eachループを編集して、ラベルオブジェクトコレクションにしたい。おそらく、彼らのName
財産
For Each l In ActiveSheet.OLEObjects
If Left(l.Name,5)="Label" Then
Set myLabel = New LabelHandler
Set myLabel.lbl = l.Object
myLabels.Add myLabel
End If
Next
またはすべてのラベルのためにより:
For Each l In ActiveSheet.OLEObjects
If l.progID = "Forms.Label.1" Then
Set myLabel = New LabelHandler
Set myLabel.lbl = l.Object
myLabels.Add myLabel
End If
Next
は申し訳ありませんが、私はあなたに良い例を記述する時間がありませんが、私は可能な方向にあなたを指すように望んでいました。 「イベントハンドラ」のコレクションを使用します。ループ内の各ラベルのイベントハンドラを追加することができます – KacireeSoftware
私はそれを行う方法についていくつかの例を見つけましたが、それらはすべてユーザーフォーム内のラベル用でしたので、私は完全に – Serveira
に従うことができませんでした。あなたのシェイプに 'mousemove'イベントがある場合、なぜ動作しないのか分かりません。 – KacireeSoftware