按ctrl或shift键多行选中,按上下键移动在线等待,立即给分

解决方案 »

  1.   

    MSFLEXGRID本来就可以用SHIFT多选的
      

  2.   

    好久没用MSFlexGrid了,推荐使用VSFlexGrid.
      

  3.   

    MSFlex Grid控件本身就提供多行选中的功能,你是否是改变了什么默认的设置?
      

  4.   

    在该控件上单击右键,在弹出的属性框中看看是否选中了 General 标签页中的AllowBigSelection项,HighLight选中1-Always FocusRect选中 1-LightStyle标签页中的GridLineFixed项选中2-Inset
      

  5.   

    给你贴个例子:网格-公司业绩,直接粘贴即可使用Option Explicit
    Private Sub Form_Click()
    '打印选定的网格区域数据
    '在选择所有单元格的情况下可实现所有网格数据打印
    '单击网格最左上角说明行列交叉部位可以选择所有单元格
        Printer.Print ""; MSFlexGrid1.Clip
        Printer.EndDoc
    End Sub
    Private Sub Form_Load()
        Dim intI As Integer
    'MSFlexGrid1.Cols为网格总列数
    'MSFlexGrid1.Rows为网格总行数
    '建立说明列
        For intI = 1 To MSFlexGrid1.Cols - 1
            MSFlexGrid1.Row = 0                     '设定当前行
            MSFlexGrid1.Col = intI                  '设定当前列
            MSFlexGrid1.Text = Str(1990 + intI)     '设定当前行、列的值
        Next intI
    '建立说明行
        For intI = 1 To MSFlexGrid1.Rows - 1
            MSFlexGrid1.Col = 0                     '设定当前列
            MSFlexGrid1.Row = intI                  '设定当前行
            If intI = MSFlexGrid1.Rows - 1 Then
                MSFlexGrid1.Text = "年总和"
            Else
                MSFlexGrid1.Text = MonthName(intI)  '设定当前行、列的值
            End If
        Next intI
    End Sub
    '清除单元格数据,然后可以重新录入
    Private Sub MSFlexGrid1_DblClick()
        Dim intR As Integer
        Dim sngSum As Single
    '用单击来设置网格的Row和Col属性
    '将键入的数值加入网格
        MSFlexGrid1.Text = ""
        sngSum = 0
    '每次KeyPress事件都对当前列的12行数据求和
        For intR = 1 To MSFlexGrid1.Rows - 2
            MSFlexGrid1.Row = intR
            sngSum = sngSum + Val(MSFlexGrid1.Text)
        Next intR
    '和数显示在最后一行
        MSFlexGrid1.Row = MSFlexGrid1.Rows - 1
        MSFlexGrid1.Text = Str(sngSum)
    End Sub
    '对单元格录入数据
    Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
        Dim intR As Integer
        Dim sngSum As Single
        Dim intOldRow As Integer, intOldCol As Integer
    '用单击来设置网格的Row和Col属性
    '将键入的数值加入网格
        MSFlexGrid1.Text = MSFlexGrid1.Text + Chr(KeyAscii)
    '保存当前行和列
        intOldRow = MSFlexGrid1.Row
        intOldCol = MSFlexGrid1.Col
        sngSum = 0
    '每次KeyPress事件都对当前列的12行数据求和
        For intR = 1 To MSFlexGrid1.Rows - 2
            MSFlexGrid1.Row = intR
            sngSum = sngSum + Val(MSFlexGrid1.Text)
        Next intR
    '和数显示在最后一行
        MSFlexGrid1.Row = MSFlexGrid1.Rows - 1
        MSFlexGrid1.Text = Str(sngSum)
    '恢复当前行和列
        MSFlexGrid1.Row = intOldRow
        MSFlexGrid1.Col = intOldCol
    End Sub