Visual Basic 6.0でのLabelについて質問です。
今、Labelが100個あるとして、
どのラベルが押されても同じ処理をさせたい場合、どのようにプログラムを組めばよいかわかりません・・・
そこで、
Private Sub Label2_Click()
Label1.Caption = "停止"
End Sub
Private Sub Label3_Click()
Label1.Caption = "停止"
End Sub
Private Sub Label4_Click()
Label1.Caption = "停止"
End Sub
・
・
・
Private Sub Label101_Click()
Label1.Caption = "停止"
End Sub
のように100個繰り返しても良いのですが、だらだら長くなってしまうので、スマートに
処理できる方法を探しています。
もしご存知の方がいらっしゃいましたら教えていただけないでしょうか?
よろしくお願いします。
新しいプロジェクトでLabel1~4を配置。
Label1は初期値:”稼働”で
Label2~4をクリックすると”停止”となる。
1)上記をForm1に配置し、
Private i As Integer
Private Sub Form_Load()
Label1.Caption = "稼働"
For i = 2 To 4
Set Lab(i).fmVal = Form1.Controls("Label" & i)
Next
End Sub
Private Sub Form_Unload(Cancel As Integer)
For i = 2 To 4
Set Lab(i).fmVal = Nothing
Next
End Sub
Private Sub Label1_Click()
Label1.Caption = "稼働"
End Sub
2)メニューバーの「プロジェクト」-「標準モジュールの追加」で
標準モジュール:Module1に
Public Lab(4) As New Class1
3)メニューバーの「プロジェクト」-「クラスモジュールの追加」で
クラスモジュール:Class1に
Public WithEvents fmVal As Label
Private Sub fmVal_Click()
Form1.Label1.Caption = "停止"
End Sub
とする。
この場合Label2~4を変数:iとLab(4)で設定しているので、
適宜修正して下さい。
( For i = 2 To 4 も。)
ご参考になれば。
質問者
お礼
詳しい回答していただいてありがとうございます!!
プログラムに組み込ませていただいたのですが、
Set Lab(i).fmVal = Form1.Controls("Label" & i)
で『インデックスが有効範囲にありません』と言われてしまうので、
もう少しにらめっこしてみます!!
お礼
>先の質問で問題解決したためでしょうか? そのとうりです・・・。 コントロール配列について勉強不足なため、使うのに抵抗がありました。 コントロール配列に変更するのはそこまで大変な作業ではないので、チャレンジしてみたいと思います!! ありがとうございました!