我用的是下面的方法,我现在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

解决方案 »

  1.   

    Dim a() As Stringa = Split("8,10,12,14,15,16", ",")With MSFlexGrid1 '改变列的背景色    For K = 0 To UBound(a)
            .Col = a(i)
            
            For J = 1 To .Rows - 1
                .Row = J
                .CellBackColor = &HFEFBDE '改变背景色
            Next J
        Next KEnd With
      

  2.   

    Private Sub Command1_Click()
        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
      

  3.   

    MSFlexGrid1
    只要是有这两行
     .Col = K
     .Row = J
    永远快不起来
      

  4.   

    To jhone99:用了你的方法,和我的那段代码运行速度是一样的.....不过仍然感谢!
      

  5.   

    To overown:
    上次的问题,填充数据用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
      

  6.   

    上次,你试图逐单元格填充数据,解决方法是用additem取代,或者直接绑定数据库
    但这次你要逐单元格设置颜色,那就没办法替代了~~~~总会有绕不开
     .Col
     .Row
    这两个属性的时候~~~
      

  7.   

    这种很实际的功能为什么MSFlexGrid不留一个方法,一次改变一列的颜色。真是遗憾
      

  8.   

    有的,可以一次改变一列
        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解决了,是不是该给分了?
    俺很久没捞到分了呢
      

  9.   

    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
      

  10.   

    在填充完了以后随便改变一下row或者col就行了
    比如:
    ....
    Next k
    .row=0  '加上这一句
    .Redraw = True
    ....