vb新手提问多选框问题请高手多多指教

来源:百度知道 编辑:UC知道 时间:2024/05/19 09:25:14
Private Sub Command20_Click()

Dim i&, j&, m&, tn&(2), ts$(2), n() As Byte

ts(0) = "01234"
ts(1) = "56789"
ts(2) = ""

For i = list1.ListCount - 1 To 0 Step -1
If Form3.Check1.Value = 1 Then
tn(0) = 3
tn(1) = 0
tn(2) = 0
End If
If Form3.Check2.Value = 1 Then
tn(0) = 2
tn(1) = 1
tn(2) = 0
End If

n = StrConv(list1.List(i), 128)

For j = 0 To 2
For m = 0 To 2
If InStr(ts(m), Chr(n(j))) > 0 Then tn(m) = tn(m) - 1
Next
Next
If tn(0) = 0 And tn(1) = 0 And tn(2) = 0 Then Else list1.RemoveItem i

Next
End Sub
这个代码为什么单独选一个复选好使,选择两个就会只显示Check2的数据呢,修改什么语句能使选择两个后,两个数据都显示呢

给高手们一个参考
建一个Command1,Check1,Check2,Check3。
代码如下。
=============
Private Sub Command1_Click()
Cls
Print "我的爱好是" & IIf(Check1.Value, Check1.Caption, "") &

1、请看这段代码:
If Form3.Check1.Value = 1 Then
tn(0) = 3
tn(1) = 0
tn(2) = 0
End If
If Form3.Check2.Value = 1 Then
tn(0) = 2
tn(1) = 1
tn(2) = 0
End If
当两个都选的话,两个if都执行,第一个if里执行的结果被第二个冲掉了。所以,等于只选了第二个。

2、代码如下,
Private Sub Command1_Click()
list1.Cls
If Check1.Value then list1.additem Check1.Caption
If Check2.Value then list1.additem Check2.Caption
If Check3.Value then list1.additem Check3.Caption
End Sub
当然,如果你的复选框很多,可以考虑使用“控件数组”。然后:
Private Sub Command1_Click()
list1.Cls
for i=0 to check1.UBound
If Check1(i).Value then list1.additem Check1(i).Caption
next i
End Sub

答案补充:
我没有看出来,你这个数组tn的作用是什么。