窗体1有一个MSFlexGrid1,还有一个按键Command1,和一个Check1,在MSFlexGrid1(1,1)以下行的(列不变)每个单元格都只有一个3位数的数字如在MSFlexGrid1(1,1)是567,MSFlexGrid1(2,1)是019,MSFlexGrid1(3,1)是428,MSFlexGrid1(4,1)是028
效果:当Check1被选择时,点击Command1,那么在MSFlexGrid1每个单元格里数据的和等于14的将被删除,然后从新把保留的数据显示在MSFlexGrid1,如上面的例子MSFlexGrid1(3,1)是428,4+2+8=14,那么它将被删除,重新显示MSFlexGrid1(1,1)是567,MSFlexGrid1(2,1)是019,MSFlexGrid1(3,1)是028,这时428行已被删除。这段代码该如何写
效果:当Check1被选择时,点击Command1,那么在MSFlexGrid1每个单元格里数据的和等于14的将被删除,然后从新把保留的数据显示在MSFlexGrid1,如上面的例子MSFlexGrid1(3,1)是428,4+2+8=14,那么它将被删除,重新显示MSFlexGrid1(1,1)是567,MSFlexGrid1(2,1)是019,MSFlexGrid1(3,1)是028,这时428行已被删除。这段代码该如何写
Private Sub Form_Load()
MSFlexGrid1.rows = 1
MSFlexGrid1.cols = 3
Dim row As Long
Dim col As Long
MSFlexGrid1.AddItem "567" & vbTab & "019" & vbTab & "428"
MSFlexGrid1.AddItem "123" & vbTab & "446" & vbTab & "789"
MSFlexGrid1.AddItem "905" & vbTab & "456" & vbTab & "789"
MSFlexGrid1.AddItem "123" & vbTab & "554" & vbTab & "789"
MSFlexGrid1.AddItem "123" & vbTab & "456" & vbTab & "662"For row = 0 To MSFlexGrid1.rows - 1
For col = 0 To MSFlexGrid1.cols - 1
ChangeTxt row, col
Next
NextEnd SubPrivate Sub ChangeTxt(ByVal row As Long, ByVal col As Long)
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.TextMatrix(row, col) = Replace(txt, Left(txt, 1), "0")
End If
End Sub
如
MSFlexGrid1(1,1)是567
MSFlexGrid1(2,1)是019
MSFlexGrid1(3,1)是428
MSFlexGrid1(4,1)是028
MSFlexGrid1(5,1)是104
MSFlexGrid1(6,1)是752
MSFlexGrid1(7,1)是103
。
。
。
。
这时428相加=14,752相加=14,删除这两行,然后重新排列
MSFlexGrid1(1,1)是567
MSFlexGrid1(2,1)是019
MSFlexGrid1(3,1)是028
MSFlexGrid1(4,1)是104
MSFlexGrid1(5,1)是103
并不是只要3位数的和=14,就把百位变成0??这里就一个条件就是单元格里的3个数相加=14的都将被删除
MSFlexGrid1.AddItem "567" & vbTab & "019" & vbTab & "428"
MSFlexGrid1.AddItem "123" & vbTab & "446" & vbTab & "789"
MSFlexGrid1.AddItem "905" & vbTab & "456" & vbTab & "789"
MSFlexGrid1.AddItem "123" & vbTab & "554" & vbTab & "789"
MSFlexGrid1.AddItem "123" & vbTab & "456" & vbTab & "662"
最好用For i = 1 To MSFlexGrid1.Rows - 1这么来定义
Dim i As Integer, j As Integer, tmp As Integer, mytxt As StringIf Check1 Then
For i = 1 To MSFlexGrid1.Rows - 1
tmp = 0
mytxt = MSFlexGrid1.TextMatrix(i, 1)
For j = 1 To Len(mytxt)
tmp = tmp + Val(Mid(mytxt, j, 1))
Next j
If tmp = 14 Then MSFlexGrid1.RemoveItem i
Next i
End If
End Sub
'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"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