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
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
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
固定的表头你可以用程序添加文字就行,就像给别的格子添加文字一样