Private Sub Command20_Click() Dim i&, j&, m&, ts$(2)
Dim tn(2) As Integer 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
c1 ts(), tn(), i
End If
If Form3.Check2.Value = 1 Then
tn(0) = 2
tn(1) = 1
tn(2) = 0
c1 ts(), tn(), i
End If
If Form3.Check3.Value = 1 Then
tn(0) = 0
tn(1) = 3
tn(2) = 0
c1 ts(), tn(), i
End If
If Form3.Check4.Value = 1 Then
tn(0) = 1
tn(1) = 2
tn(2) = 0
c1 ts(), tn(), i
End If Next
End Sub Sub c1(ts1() As String, tn1() As Integer, i1&)
Dim n() As Byte
n = StrConv(List1.List(i1), 128) For j = 0 To 2
For m = 0 To 2
If InStr(ts1(m), Chr(n(j))) > 0 Then tn1(m) = tn1(m) - 1
Next
Next
If tn1(0) = 0 And tn1(1) = 0 And tn1(2) = 0 Then Else List1.RemoveItem i1 End Sub
这段代码单独选一个复选好使,多选出现下标越界在这里i1,这该怎么改呀,这个代码都改将近10天了,还没有成功
Dim tn(2) As Integer 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
c1 ts(), tn(), i
End If
If Form3.Check2.Value = 1 Then
tn(0) = 2
tn(1) = 1
tn(2) = 0
c1 ts(), tn(), i
End If
If Form3.Check3.Value = 1 Then
tn(0) = 0
tn(1) = 3
tn(2) = 0
c1 ts(), tn(), i
End If
If Form3.Check4.Value = 1 Then
tn(0) = 1
tn(1) = 2
tn(2) = 0
c1 ts(), tn(), i
End If Next
End Sub Sub c1(ts1() As String, tn1() As Integer, i1&)
Dim n() As Byte
n = StrConv(List1.List(i1), 128) For j = 0 To 2
For m = 0 To 2
If InStr(ts1(m), Chr(n(j))) > 0 Then tn1(m) = tn1(m) - 1
Next
Next
If tn1(0) = 0 And tn1(1) = 0 And tn1(2) = 0 Then Else List1.RemoveItem i1 End Sub
这段代码单独选一个复选好使,多选出现下标越界在这里i1,这该怎么改呀,这个代码都改将近10天了,还没有成功
语法
StrConv(string, conversion, LCID)
StrConv 函数的语法有下面的命名参数:
部分 说明
string 必要参数。要转换的字符串表达式。
conversion 必要参数。Integer。其值的和决定转换的类型。
LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。) 设置值
conversion 参数的设置值为:
常数 值 说明
vbUpperCase 1 将字符串文字转成大写。
vbLowerCase 2 将字符串文字转成小写。
vbProperCase 3 将字符串中每个字的开头字母转成大写。
vbWide* 4* 将字符串中单字节字符转成双字节字符。
vbNarrow* 8* 将字符串中双字节字符转成单字节字符。
vbKatakana** 16** 将字符串中平假名字符转成片假名字符。
vbHiragana** 32** 将字符串中片假名字符转成平假名字符。
vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。
vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。
*应用到远东国别。
**仅应用到日本。
注意 这些常数是由 VBA 指定的。可以在程序中使用它们来替换真正的值。其中大部分是可以组合的,例如 vbUpperCase + vbWide,互斥的常数不能组合,例如 vbUnicode + vbFromUnicode。当在不适用的国别使用常数 vbWide、vbNarrow、vbKatakana,和 vbHiragana 时,就会导致运行时错误。
下面是一些一般情况下的有效分界符:Null (Chr$(0)),水平制表符 (Chr$(9)),换行 (Chr$(10)),垂直制表符 (Chr$(11)),换页 (Chr$(12)) ,回车 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS中,空白的实际值会随国家/地区而不同。
说明
在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode 格式的这种数组时,使用赋值语句。
这句是不是要放到上面的代码里呀,Sub c1(ts1() As String, tn1() As Integer, i1&),ts1()这个在括号里一赋值就告诉少右括号
Private Sub Command20_Click() Dim i&, j&, m&, ts$(2), n() As Byte
Dim tn(2) As String 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
If Form3.Check3.Value = 1 Then
tn(0) = 0
tn(1) = 3
tn(2) = 0
End If
If Form3.Check4.Value = 1 Then
tn(0) = 1
tn(1) = 2
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
而你的COMMAND20.CLICK里又
CL TS(),TN(),I如果列表里根本就什么都没了... 你要删除什么呢... 看样子你就是想点个CHECKED就删除一项...可是有必要搞这么麻烦吗???
Private Sub Check1_Click()
If Check1.Value = 1 Then
List1.Clear
List1.AddItem ("1")
List1.AddItem ("2")
List1.AddItem ("3")
End If
End Sub还有如果要检测其他的,就直接在各CHECK里加个判断就行了...
这么少的列表项还搞这么复杂的东西来统一判断...
你的精力貌似很旺盛啊
如果苹果被咬了 我就记录被咬的苹果数字
如果被咬的苹果数字大于1个那么
我就把所有被咬的苹果挑出来,把每个被咬的苹果上的牙齿印的特征在黑板上记下来
如果只有被咬的苹果数只有1个那么我首先把黑板擦干净
按照原来设计好的
如果是第1个
那么
如果是第2个
那么
XXXXXXXXX 好了,这个思路就可以解决你的问题...
能不用麻烦的就不用麻烦的...你用数组实在是太麻烦了...
修改 删除 举报 引用 回复
加为好友
发送私信
在线聊天
bob008
冻冬
等级:
可用分等级:富农
总技术专家分:2356
总技术专家分排名:9075 发表于:2008-09-07 13:20:449楼 得分:0
算了.好人做到底,给你写个例子
Option Explicit
Private Sub chk(index As Integer) '自己定义 如果一堆苹果,只咬了第1个怎么写,只咬了第2个怎么写,等等
Select Case index
Case 0:
If Check1(0).Value = 1 Then '如果被咬了
List1.AddItem ("123456")
List1.AddItem ("223456")
End If
Case 1:
If Check1(1).Value = 1 Then
List1.AddItem ("123456")
List1.AddItem ("223456")
End If
Case 2:
If Check1(2).Value = 1 Then
List1.AddItem ("123456")
List1.AddItem ("223456")
End If
Case 3:
If Check1(3).Value = 1 Then
List1.AddItem ("123456")
List1.AddItem ("223456")
End If
End Select
End Sub
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
List1.Clear '擦黑板---不过这控件是白板,反正差不多了
j = 0 '先赋初始值
For i = 0 To 3 '先检查一下苹果被咬了多少个
If Check1(i).Value = 1 Then
j = j + 1
End If
Next
If j > 1 Then '如果被咬了1个以上
For i = 0 To 3
If Check1(i).Value = 1 Then
chk (i) '那就按上面定的第1个咬了怎么办,第2个咬了怎么办的记录
End If
Next '如果只有1个,甚至一个都没咬
Else
List1.Clear '还是先搽黑板
For i = 0 To 3
If Check1(i).Value = 1 Then '还是按上面定的第1个咬了怎么办,第2个咬了怎么办的记录.
chk (i)
End If
Next
End If
End Sub