お世話になっております。VB2005を最近かじりました。
フォーム上にボタンが100個ほど並んでいます。
グローバル変数としてboolean型のフラグを立てて、
ボタンを押したらボタンの色がピンクに、もう一度押したら元の色にという
ごく簡単なプログラムを書きたいのですが、
1個のボタンごとに
Private Flag as Boolean
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Select Case Flag
Case False
Button1.BackColor = Color.Pink
Flag = True
Case True
Button1.BackColor = Color.FromKnownColor(KnownColor.ControlLight)
Flag = False
End Select
End Sub
というプログラムを書くと100個同じようなプログラムを書かなくてはいけなくなり、大変手間がかかりメンテも大変です。
もっと簡単にする方法があったら教えていただきたく存じます。
No.3ベストアンサー
- 回答日時:
こんにちは。
コントロールを配列で管理する方法もあります。
コントロールを配列で管理する
http://vbdotnet.fc2web.com/vbnet/control/Control …
ここが参考になります。
上記の配列に格納する部分ですが、100個もやるのは大変なので
For I = 0 To 99
btnArray(I) = Me.Controls("Button" & I)
Next
とするといいでしょう。(ボタン名は変更していないとします。)
それから、イベントハンドルの登録をこのループに入れるといいでしょう。
どうでしょうか。
No.2
- 回答日時:
ちょっとだけ簡単に
(コードはボタン2個です)
Private Flag(2) As Boolean
Private Sub Buttons_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click, Button2.Click
Dim btn As Button
Dim strNo As String
Dim iNo As Integer
btn = CType(sender, Button) 'イベント発生元のボタン情報を取得
strNo = Microsoft.VisualBasic.Mid(btn.Name, 7)
iNo = CInt(strNo)
Select Case Flag(iNo)
Case False
btn.BackColor = Color.Pink
Flag(iNo) = True
Case True
btn.BackColor = Color.FromKnownColor(KnownColor.ControlLight)
Flag(iNo) = False
End Select
End Sub
No.1
- 回答日時:
とりあえず質問文のコードから解釈し、Flag 変数は全てのボタンで共有する理解で。
簡単に済ますなら全てのボタンの Click イベントを 1つのプロシージャに関連付けちゃう。
Private Sub Button_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
って行の Handles から後ろを
Handles Button1.Click, Button2.Click, Button3.Click ・・・ Button100.Click
とする。
次にボタンの色を変えているところを
CType(sender, System.Windows.Forms.Button).BackColor = Color.Pink
のようにする。
って線でどうでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) エクセル VBAについて 2 2022/05/16 16:33
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
フォームの再読み込み
-
ユーザーフォームに別シートか...
-
excel シート上のボタンが動かない
-
セルをマクロのボタンにしたい。
-
ASP.Net ラベルの内容をすぐに...
-
VBAのボタンの位置が変わって困...
-
チェックボックスで指定出来る...
-
Access VBA でデータペーストを...
-
プロシージャからイベントをコ...
-
オプションボタンによっての表...
-
VB.net でトグルボタンを実現し...
-
ボタンの増殖
-
アイコンとボタンの違い
-
ボタン
-
VBAで多数のプログラムを一つの...
-
閉じると「+」になり開くと「-...
-
VB.NETでボタンの形状を変えたい
-
Excel マクロ 閉じるボタン
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
フォームの再読み込み
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
セルをマクロのボタンにしたい。
-
コマンドボタンやイメージにマ...
-
Excel VBA Application.caller...
-
マクロについて質問です。 セル...
-
プロシージャからイベントをコ...
-
VB.NETでマウスクリックイベン...
-
ボタン
-
ASP.Net ラベルの内容をすぐに...
-
閉じると「+」になり開くと「-...
-
VBAのボタンの位置が変わって困...
-
VBA IE ダウンロード ダイアロ...
-
ボタンをマウスで押し続けたと...
-
VBAでオプションボタンによって...
-
TextBoxでEnterキーを押すと、...
-
VB.net でトグルボタンを実現し...
おすすめ情報