注册 登录
编程论坛 VB6论坛

如何将MSFlexgrid中的数据导入Excel

我爱问 发布于 2016-05-12 10:23, 2547 次点击
Public Sub OutDataToExcel(Flex As MSFlexGrid)
Dim s As String
Dim i As Integer
Dim j As Integer
Dim k As Integer
OnError
GoTo Ert
Me.MousePointer = 11
Dim Excelapp As Excel.Application
Set Excelapp = New Excel.Application
OnError
Resume NextDoEvents
Excelapp.SheetsInNewWorkbook = 1
Excelapp.Workbooks.Add
Excelapp.ActiveSheet.Cells(1, 3) = s
Excelapp.Range(C1).Select
Excelapp.Selection.Font.FontStyle = Bold
Excelapp.Selection.Font.Size = 16
With Flexk = .Rows
For i = 0 To k - 1
For j = 0 To .Cols - 1
DoEvents
Excelapp.ActiveSheet.Cells(3 + i, j + 1) = TextMatrix(i, j)
Next j
Next i
End With
Me.MousePointer = 0
Excelapp.Visible = True
'Excelapp.Sheets.PrintPreviewErt:
'If Not (Excelapp Is Nothing) Then
'Excelapp.Quit
'End If
End Sub
想问一下各位大神这个程序为什么在执行的时候会出现子程序或函数未定义?
5 回复
#2
xiangyue05102016-05-12 11:15
子程序或函数未定义就是这个意思。有一个语句认为你调用了一个sub或者Function。
1.你并未定义这个sub或者Function
2.别的模块中有,但是不是公用的
3.有变量或者数组没定义,当成函数了
我初步看了一下,好像是 TextMatrix(i, j),如果是数组没有被定义, 如果是MSFlexGrid(太久了没用过了)的子对象/属性,前面少了一个“.”
#3
hjxlj2016-05-12 13:39
你这句

Excelapp.ActiveSheet.Cells(3 + i, j + 1) = TextMatrix(i, j)

少了个点啊,小妹妹。应该那样

Excelapp.ActiveSheet.Cells(3 + i, j + 1) = .TextMatrix(i, j)

看到没有,后面的不是TextMatrix(i, j),而是.TextMatrix(i, j)。编程一定要胆大心细,否则稍有差错就无法通过。另外仔细看了一下你的代码,确实还存在其它语法错误。

[此贴子已经被作者于2016-5-12 23:53编辑过]

#4
ZHRXJR2016-05-12 21:32
可能是下面语句的问题吧
OnError
GoTo Ert
1、将OnError认为是函数了吧,应该是   On Error GoTo Ert
OnError
Resume NextDoEvents
2、同样的问题,应该是  On Error Resume Next
With Flexk = .Rows
3、With后面不对吧,应该是 MSFlexgrid1 吧,应该是  With MSFlexgrid1
For i = 0 To k - 1
4、上面没有k的值,这里k=0,那么这个循环还能工作吗,应该是 For i = 0 To .Cols - 1
For j = 0 To .Cols - 1
5、行循环不应该是列的值吧 ,应该是 For j = 0 To .Rows - 1
不知对不对,探讨而已。
#5
我爱问2016-05-13 10:00
谢谢各位大神点拨
#6
hjxlj2016-05-13 10:18
回复 5楼 我爱问
问题解决了就请结帖
1