在MSFlexGrid1.TextMatrix(i, 1),每个单元格都一个3位数组成的数字,当Check1(0)被选择,点击Command4把单元格中3个数字和为18的过滤掉,我写成以下代码,不过不好使,该如何改
Private Sub Command4_Click()
Dim i As Integer, t As Integer
Dim j As Integer
Dim a As Integer, aa As Integer, aaa As Integer
For i = 1 To MSFlexGrid1.Rows - 1
t = MSFlexGrid1.TextMatrix(i, 1)
a = Val(Mid(t, 1, 1))'单元格第一个数字
aa = Val(Mid(t, 2, 1))'单元格第二个数字
aaa = Val(Mid(t, 3, 1))'单元格第三个数字
If Check1(0).Value = 1 Then
j = a + aa + aaa'三个数字的和
If not j =18 Then MSFlexGrid1.RemoveItem i '排除三个数字和为18的行,然后从新显示
End If
Next
Label1.Caption = MSFlexGrid1.Rows - 1
End Sub
Private Sub Command4_Click()
Dim i As Integer, t As Integer
Dim j As Integer
Dim a As Integer, aa As Integer, aaa As Integer
For i = 1 To MSFlexGrid1.Rows - 1
t = MSFlexGrid1.TextMatrix(i, 1)
a = Val(Mid(t, 1, 1))'单元格第一个数字
aa = Val(Mid(t, 2, 1))'单元格第二个数字
aaa = Val(Mid(t, 3, 1))'单元格第三个数字
If Check1(0).Value = 1 Then
j = a + aa + aaa'三个数字的和
If not j =18 Then MSFlexGrid1.RemoveItem i '排除三个数字和为18的行,然后从新显示
End If
Next
Label1.Caption = MSFlexGrid1.Rows - 1
End Sub
改为
If j =18 Then MSFlexGrid1.RemoveItem i '排除三个数字和为18的行,然后从新显示
Dim i As Integer, t As Integer
Dim j As Integer
Dim a As Integer, aa As Integer, aaa As Integer '不选就不需要进入循环了
If Check1(0).Value <> vbChecked Then Exit Sub
'因为删除行导致行变化,反向循环可以不受影响
For i = MSFlexGrid1.Rows - 1 To 1 Step -1
t = MSFlexGrid1.TextMatrix(i, 1)
a = Val(Mid(t, 1, 1))
aa = Val(Mid(t, 2, 1))
aaa = Val(Mid(t, 3, 1)) j = a + aa + aaa If Not j = 18 Then MSFlexGrid1.RemoveItem i
Next Label1.Caption = MSFlexGrid1.Rows - 1
End Sub
MSFlexGrid1.Rows - 1
和这个是同样的问题
Private Sub Form_Load()
'On Error Resume Next
MSFlexGrid1.rows = 1
MSFlexGrid1.cols = 3
Dim row As Long
Dim col As LongMSFlexGrid1.AddItem "567" & vbTab & "019" & vbTab & "428"
MSFlexGrid1.AddItem "123" & vbTab & "446" & vbTab & "789"
MSFlexGrid1.AddItem "915" & vbTab & "456" & vbTab & "789"
MSFlexGrid1.AddItem "123" & vbTab & "554" & vbTab & "789"
MSFlexGrid1.AddItem "123" & vbTab & "456" & vbTab & "602"’这里处理的是和为14的,你用CHECKBOX,只是多个判断而已
For row = MSFlexGrid1.rows - 1 To 0 Step -1
For col = 0 To MSFlexGrid1.cols - 1
Dim txt As String
txt = MSFlexGrid1.TextMatrix(row, col)
If Val(Left(txt, 1)) + Val(Right(txt, 1)) + Val(Mid(txt, 2, 1)) = 14 Then
MSFlexGrid1.RemoveItem row
Exit For
End If
Next
NextEnd Sub