チェックボックスを使ってチェックを入れると背景の色が変わり、ラベル1に入力している文字(AがBのように)変わるのを作っているのですが、
背景を変えるのとAをBにするところまではできたのですが、次にチェックをはずすと初めから入力してあるAに戻る方法が分かりません。
If文を使って地道に作っていたのですが、あまりも莫大な量になってしまうので、何か良い方法があればご教授下さい。
Private Sub Check10_Click()
If Check10.Value = vbChecked Then
Frame10.BackColor = &HFFC0C0
Check10.BackColor = &HFFC0C0
Label70.ForeColor = &HFF0000
If List2.ListIndex = 0 Then
Label70.Caption = "0"
End If
If List2.ListIndex = 1 Then
Label70.Caption = "1"
End If
If List2.ListIndex = 2 Then
Label70.Caption = "2"
End If
If List2.ListIndex = 3 Then
Label70.Caption = "3"
End If
こんな感じでずっーと続く…
Else
Frame10.BackColor = &H8080FF
Check10.BackColor = &H8080FF
Label70.ForeColor = &HFF
If List1.ListIndex = 0 Then
Label70.Caption = "0"
End If
If List1.ListIndex = 1 Then
Label70.Caption = "A"
End If
If List1.ListIndex = 2 Then
Label70.Caption = "B"
End If
If List1.ListIndex = 3 Then
Label70.Caption = "C"
こんな感じでずっーと続く…
End If
End If
End Sub
これはチェックボックスの使い方じゃなくて、コーディング上の質問だよな?
で、こういう名前や条件式の中で、数値が出てきていてなおかつそれらが数列を成す場合には、
配列やCollectionを使ったアクセス(または条件分散)が使えると考えられる。
ためしに、
dim v as variant
dim i as integer
v=split("0 1 2 3 4 5 6 7 8 9 A B C D E F"," ")
for i=0 to &hf
debug.? v(lbound(v)+i)
next
とか言うのを動かしてみるといいかもしらんヒント。
※さて今日も誤爆すr(ry
vb6
チェックボックスとラベルをコントロール配列にして3つForm上に作る。
そして下のロジックを実行。
Option Explicit
Private Sub Check1_Click(Index As Integer)
If Check1(Index).Value = False Then
Form1.BackColor = &H8000000F
Label1(Index).Caption = ""
Exit Sub
End If
Label1(Index).Caption = "Label" & CStr(Index)
Select Case Index
Case 1
Form1.BackColor = vbRed
Case 2
Form1.BackColor = vbBlue
Case 3
Form1.BackColor = vbYellow
Case Else
Form1.BackColor = vbGreen
End Select
End Sub
こんな感じかな(^^;)