Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7493 / 13645 ツリー ←次へ | 前へ→

【38813】同種複数コントロールのイベントをまとめて扱う方法? 西谷 さくら 06/6/11(日) 11:50 質問[未読]
【38814】Re:同種複数コントロールのイベントをま... kobasan 06/6/11(日) 12:14 発言[未読]
【38862】Re:同種複数コントロールのイベントをま... 西谷 さくら 06/6/12(月) 22:46 お礼[未読]
【38815】Re:同種複数コントロールのイベントをまと... Kein 06/6/11(日) 13:54 回答[未読]
【38861】Re:同種複数コントロールのイベントをまと... 西谷 さくら 06/6/12(月) 22:42 お礼[未読]

【38813】同種複数コントロールのイベントをまとめ...
質問  西谷 さくら  - 06/6/11(日) 11:50 -

引用なし
パスワード
   ラベル100個に数値を表示しているのですが、フォントが小さくなってしまったので、マウスダウンでwidth, height, fontsize を倍にし、マウスアップで戻すようなサブルーチンを作りました。ラベル100個のマウスダウンとマウスアップイベントにそれぞれ、そのサブルーチン・コールを書かなければならないのでしょうか?
ラベルはLabel1, Label2 などとcontrols("Label" & i) で、捕らえることができるので、何か書き出す場合はまとめて扱えるのですが、ユーザーのマウス操作を受け取るときは、まとめて扱う方法は、あるのでしょうか?(繰り返しになりましたが)

【38814】Re:同種複数コントロールのイベントをま...
発言  kobasan  - 06/6/11(日) 12:14 -

引用なし
パスワード
   今日は。
この種の解決策は、クラスモジュールを利用するといいと思います。

角田さんの [擬似からの脱却]
http://www.h3.dion.ne.jp/~sakatsu/Breakthrough_P-Ctrl_Arrays.htm

を参考にされては。

【38815】Re:同種複数コントロールのイベントをま...
回答  Kein  - 06/6/11(日) 13:54 -

引用なし
パスワード
   フォームツールバーのラベルを使えば、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

などとすれば良いでしょう。

【38861】Re:同種複数コントロールのイベントをま...
お礼  西谷 さくら  - 06/6/12(月) 22:42 -

引用なし
パスワード
   ▼Kein さん:
わたしの説明が足りなかったようです。フォーム上にコントロールを作っているのでうまくいきませんでした。
Controls("Label" & i).OnAction="GoGetIt" などとトライしましたが、フォーム
上では OnAction は使えないようでした。
でも、シート上ではおっしゃったとおり動きました。シート上にコントロールを
配置することもあるので大変参考になりました。
ありがとうございます。

【38862】Re:同種複数コントロールのイベントをま...
お礼  西谷 さくら  - 06/6/12(月) 22:46 -

引用なし
パスワード
   ▼kobasan さん:
解読中でーす。

7493 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free