各位老师:     假设我当前选中的行为3至6行。要改变3至6行的行高改为280  用循环改变的特别慢
Dim i As Integer, j As Integer
 For j = 3 To 6
     Me.Grid1.RowHeight(j) = 280
  Next j如果用  Me.Grid1.RowHeight(-) = 280
这样以将所用的行高都改为了280。
还有其它更快一点的办法吗?谢谢

解决方案 »

  1.   

    如果很多行。
    试试先.Redraw = False,修改后.Redraw = true
      

  2.   

    楼上的老师们:   我用的是LockWindowUpdate,多行的时候还是很慢的。如果超过500行要等待很久Public Sub MytotalSort()                      '+combox 筛选MshFlexGrid 窗体数据    Dim i As Integer, j As Integer, k As Integer
        Dim p As Boolean, p1 As Boolean
        Dim MyData As Long
        Dim intRow As Integer
        p1 = False '判断是否有筛选
        LockWindowUpdate frm_InData.Grid1.hwnd
        Me.Grid1.AllowUserResizing = flexResizeBoth
        If Me.Grid1.Rows > 1 And arrgeesort Then
            For j = 1 To Me.Grid1.Rows - 1
                p = False
                For i = 0 To 21
                    If arrRowset(i) Then
                        p1 = True
                        If Me.Grid1.TextMatrix(j, i) = arrRowText(i) Then
                            p = False
                        Else
                            p = True
                            Exit For
                        End If
                    End If
                Next i
                If p Then
                    If Me.Grid1.RowHeight(j) > 0 Then
                        Me.Grid1.RowHeight(j) = 0
                    End If
                Else
                    If Me.Grid1.RowHeight(j) = 0 Then
                        Me.Grid1.RowHeight(j) = 255
                    End If
                End If
            Next j
            If p1 = False Then
                Me.Grid1.RowHeight(-1) = 255
            End If
            For j = 1 To Me.Grid1.Rows - 1
                If Me.Grid1.RowHeight(j) > 0 Then
                    MyData = MyData + Val(Me.Grid1.TextMatrix(j, 11))
                    intRow = intRow + 1
                    Me.Grid1.FillStyle = 1
                    Me.Grid1.col = 0
                    Me.Grid1.row = j
                    If intRow Mod 2 = 0 Then
                        If Me.Grid1.CellBackColor = 16777215 Then
                            Me.Grid1.ColSel = Me.Grid1.Cols - 1
                            Me.Grid1.CellBackColor = &HFFFFC0
                        End If
                    Else
                        If Me.Grid1.CellBackColor = 16777152 Then
                            Me.Grid1.ColSel = Me.Grid1.Cols - 1
                            Me.Grid1.CellBackColor = &HFFFFFF
                        End If
                    End If
                    Me.Grid1.FillStyle = 0
                End If
            Next j
            Me.txt_qty = MyData
            Me.txt_Count = intRow
        End If
       LockWindowUpdate 0
        'Me.AutoRedraw = True
        
    End Sub
      

  3.   


    简单的办法, 加两句话就提速100倍:你原来是: 
    For j = 1 To Me.Grid1.Rows - 1
    ...
    next j外面加上两句变成:
    with grid1
       .visible= false
       For j = 1 To .Rows - 1
       ...
       next
       .visible =true
    end with就这样, for里面的语句,凡是之前写成 "Me.Grid1.XXX" 的,统统改成 ".XXX"另外, 凡是本窗体的控件, 引用之前就不必加ME.了