VB5 + 自带的MSFlexGrid,仅仅是设置了 FixedCols = 0从某Excel文件复制若干行若干列数据,点击Command1按钮后,MSFlexGrid的行和列不能自动增加并显示出完整的Excel数据。Private Sub Command1_Click()
  Dim i As Long
  Dim s As Long
  Dim m As Long
  Dim t As Long
  If MSFlexGrid1.Rows = 1 Then Exit Sub
  t = Len(Clipboard.GetText)
  If t = 0 Then Exit Sub
  For i = 1 To t
      If Mid(Clipboard.GetText, i, 1) = Chr(9) Then s = s + 1
      If Mid(Clipboard.GetText, i, 1) = Chr(13) Then m = m + 1
  Next
  If s / (m + 1) + MSFlexGrid1.Col > MSFlexGrid1.Cols - 1 Then
      MSFlexGrid1.ColSel = MSFlexGrid1.Cols - 1
  Else
      MSFlexGrid1.ColSel = s / (m + 1) + MSFlexGrid1.Col
  End If
  If MSFlexGrid1.Row + m > MSFlexGrid1.Rows - 1 Then
      MSFlexGrid1.RowSel = MSFlexGrid1.Rows - 1
  Else
      MSFlexGrid1.RowSel = MSFlexGrid1.Row + m
  End If
  MSFlexGrid1.Clip = Clipboard.GetText
End Sub

解决方案 »

  1.   

    MSFlexGrid1.Clip = Clipboard.GetText ,这句只是完成了你点击的那个框粘贴,其他的就不粘贴了,你可以使用下面的这些语句,完成多行的粘贴,可以设置需不需要MSFlexGrid自适应内容的大小,我这测试通过,你可以试试!Private Sub Command1_Click()
        Dim i As Integer, j As Integer
        Dim intRow As Integer
        Dim intColumn As Integer
        Dim strRowData() As String
        Dim strColumnData() As String
        Dim strData As String
        strRowData = Split(Clipboard.GetText, vbCr) '//取得数据
        intRow = UBound(strRowData) '//取得行数
        intColumn = UBound(Split(strRowData(0), vbTab)) '//取得列数
        On Error Resume Next '//防出错
        With MSFlexGrid1
            '//下面两句是使MSFlexGrid自适应内容的大小,如果固定MSFlexGrid大小完全可以不要下面两句
            .Cols = .Col + intColumn + 1
            .Rows = .Row + intRow
            '//以下是直接给行列赋值
            For i = 0 To intRow
                For j = 0 To intColumn
                    .TextMatrix(.Row + i, .Col + j) = Split(strRowData(i), vbTab)(j)
                Next
            Next
        End With
    End Sub
      

  2.   

    VB5 + Windows XP运行后报错:子程序或函数未定义光标定位在 Split 那里。
      

  3.   

    VB5?我这是VB6代码,VB5里没有Split的函数,咋还用VB5啊,呵呵!
      

  4.   

    主要是考虑到这个小软件可以存到U盘上,在任何没有安装 Access 的windows系统下都可以立即使用。我是想做个统计分数的小软件。
      

  5.   

    如果一楼的问题不好解决的话,那能不能从Excel的Sheet1读取数据呢?在Excel的sheet1工作表中有10列1200行数据。还有个问题:MSFlexGrid 第一行固定的那个表头,可以自定义文字内容吗?
      

  6.   

    从excel读数据没问题啊.
    固定的表头你可以用程序添加文字就行,就像给别的格子添加文字一样