我用的是下面的方法,我现在MSFlexGrid1 里有60条数据时,给每列填充背景色就很慢了,是否有更高效快捷的方法,谢谢!With MSFlexGrid1 '改变列的背景色 For K = 1 To .Cols - 1
If K = 8 Or K = 10 Or K = 12 Or K = 14 Or K = 15 Or K = 16 Then
.Col = K
For J = 1 To .Rows - 1
.Row = J
.CellBackColor = &HFEFBDE '改变背景色
Next J
End If
Next KEnd With
If K = 8 Or K = 10 Or K = 12 Or K = 14 Or K = 15 Or K = 16 Then
.Col = K
For J = 1 To .Rows - 1
.Row = J
.CellBackColor = &HFEFBDE '改变背景色
Next J
End If
Next KEnd With
.Col = a(i)
For J = 1 To .Rows - 1
.Row = J
.CellBackColor = &HFEFBDE '改变背景色
Next J
Next KEnd With
Dim a() As String
Dim K As Integer
Dim J As Integer
a = Split("8,10,12,14,15,16", ",")
With MSFlexGrid1 '改变列的背景色
For K = 0 To UBound(a)
.Col = a(K)
For J = 1 To .Rows - 1
.Row = J
.CellBackColor = &HFEFBDE '改变背景色
Next J
Next K
End With
End Sub
只要是有这两行
.Col = K
.Row = J
永远快不起来
上次的问题,填充数据用additem可以非常快地显示出来。
VB code
With MSFlexGrid1
.Rows = 1
Do While Not rs_flex3.EOF
.additem "" & vbtab & rs_flex3.Fields("team_nm") & vbtab & rs_flex3.Fields("worker_id") & vbtab & rs_flex3.Fields("worker_nm") & vbcrlf
rs_flex3.MoveNext
Loop
End With
但这次你要逐单元格设置颜色,那就没办法替代了~~~~总会有绕不开
.Col
.Row
这两个属性的时候~~~
With MSFlexGrid1
.Redraw = False'这个可以快一点
.FillStyle = flexFillRepeat '设置这个属性,一次改变一行、一列
For k = 1 To .Cols - 1
If k = 8 Or k = 10 Or k = 12 Or k = 14 Or k = 15 Or k = 16 Then
.Col = k
.Row = 1
.RowSel = .Rows - 1
.CellBackColor = &HFEFBDE '改变背景色
End If
Next k
.Redraw = True
End With这个代码用的时间是你原来的十分之一左右
楼主上一个帖子既然用additem解决了,是不是该给分了?
俺很久没捞到分了呢
十分感谢!另外,改变颜色的方法有点问题,填充到最后一列时,只是第一个单元格被填充颜色,下面的单元格都是被选中的深蓝色
With MSFlexGrid1
.Redraw = False'这个可以快一点
.FillStyle = flexFillRepeat '设置这个属性,一次改变一行、一列
For k = 1 To .Cols - 1
If k = 8 Or k = 10 Or k = 12 Or k = 14 Or k = 15 Or k = 16 Then
.Col = k
.Row = 1
.RowSel = .Rows - 1
.CellBackColor = &HFEFBDE '改变背景色
End If
Next k
.Redraw = True
End With
比如:
....
Next k
.row=0 '加上这一句
.Redraw = True
....