|
フォームツールバーのラベルを使えば、1つのプロシージャで処理できます。
100個も作る必要があるなら、ラベルを配置することもマクロでやってしまう
方が効率的ですが、そこで一工夫して、名前も連番でつけるようにします。↓
Sub Lbels_Add()
Dim i As Integer
Dim Tp As Single, Hp As Single
Hp = ActiveSheet.StandardHeight
For i = 1 To 100
Tp = Cells(i, 1).Top
ActiveSheet.Labels.Add(0, Tp, 50, Hp) _
.Name = "Label " & i
Next i
ActiveSheet.Labels.OnAction = "Get_MyLabel"
End Sub
Sub Get_MyLabel()
Dim x As Variant
x = Application.Caller
If VarType(x) <> 8 Then Exit Sub
MsgBox "ラベル名 = " & x & vbLf & _
ActiveSheet.Labels(x).Text
End Sub
一括して削除するコード↓
Sub Del_Lbels()
ActiveSheet.Labels.Delete
End Sub
*ラベルに付けた番号(i)によって処理を分岐したいときは、ラベルを配置した
ときのコードによって、"Label" の文字と番号の間にスペースを入れてあるので
Select Case Split(x, " ")(1)
Case 1 To 10
'1〜10番までのラベルをクリックしたときの処理
Case 11 To 20
以下省略
End Select
などとすれば良いでしょう。
|
|