| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 479 人关注过本帖
标题:高手谁来帮帮我,简单却搞不定的一段
只看楼主 收藏
start1901
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2018-2-26
结帖率:25%
  已结贴   问题点数:20  回复次数:6   
高手谁来帮帮我,简单却搞不定的一段
写了一个小软件,其中有两个按钮的代码结尾是一样的,都是:
ulSheet.Activate
   ulSheet.Range("A1:M" & n).Select
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
   
    ulSheet.Columns("A:G").Select
    Selection.ColumnWidth = 8
问题,我运行第一个按钮,很正常运行结束,点第二个按钮就会报错,
关了再开,先点第二个按钮,很正常运行结束,再点第一个就会报错,
先点的正常,后点的就会报错,求高手帮帮无助的我~~

2018-02-26 22:38
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:85
帖 子:905
专家分:5207
注 册:2015-8-10
  得分:10 
从代码本身看不出错误。代码也不全,不可能测试
怀疑是执行一次之后ulSheet没有获取对象,建议在代码中加中断和监控,调试过程中看一下ulSheet是不是为空
2018-02-27 17:00
start1901
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2018-2-26
  得分:0 
回复 楼主 start1901
补充上完整代码
第一个按钮:
Private Sub Command29_Click()  '五
Dim ulBook As Excel.Workbook
Dim ulSheet As Excel.Worksheet
Set ulBook = xlApp.Workbooks.Add  '新建一个存储结果
Set ulSheet = ulBook.Worksheets(1)

ulSheet.Activate
    ulSheet.Range("A1:K" & m).Select
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With

  ulSheet.Columns("A:C").Select
  Selection.ColumnWidth = 8

pb2 = "D:\GuoResult\53OilArea.xls"

ulBook.SaveAs FileName:=pb2
ulBook.Close (True)
xlApp.Quit
Set xlApp = Nothing
MsgBox ("请查看" & pb2)
End Sub

第二个按钮:
Private Sub Command28_Click()  '五
Dim ulBook As Excel.Workbook
Dim ulSheet As Excel.Worksheet
Set ulBook = xlApp.Workbooks.Add  '新建一个存储结果
Set ulSheet = ulBook.Worksheets(1)

ulSheet.Activate
    ulSheet.Range("A1:K" & m).Select
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With

  ulSheet.Columns("A:C").Select
  Selection.ColumnWidth = 8

pb2 = "D:\GuoResult\53OilArea.xls"

ulBook.SaveAs FileName:=pb2
ulBook.Close (True)
xlApp.Quit
Set xlApp = Nothing
MsgBox ("请查看" & pb2)
End Sub
2018-02-27 20:37
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:206
帖 子:4185
专家分:25726
注 册:2008-10-15
  得分:10 
Dim ulBook As Excel.Workbook
Dim ulSheet As Excel.Worksheet
Set ulBook = xlApp.Workbooks.Add  '新建一个存储结果
Set ulSheet = ulBook.Worksheets(1)

ulBook.SaveAs FileName:=pb2
ulBook.Close (True)
xlApp.Quit
Set xlApp = Nothing


ulBook.Close (True)   这句,把工作簿关掉了
xlApp.Quit            这句,还把 EXCEL 关掉了

而你打开 EXCEL 的代码在哪?

二个按钮中都没有打开EXCEL的代码,只有直接使用 xlApp 对象 操作 工作簿的代码

第一个执行的关闭的EXCEL,那第二个执行的,在
Set ulBook = xlApp.Workbooks.Add  '新建一个存储结果
这句就应该要报错了,对象已关闭

授人于鱼,不如授人于渔
早已停用QQ了
2018-02-28 08:51
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:85
帖 子:905
专家分:5207
注 册:2015-8-10
  得分:0 
就是我说的问题,初步判断应该是这句
Set xlApp = Nothing
第一次运行时xlApp =excel.application,所以是没有问题,但是运行完之后上面的语句释放对象了。再运行时xlapp已经为空
所以,你这个程序不管先点击哪个按钮都可以,但是第二次点击都会报错。解决方法
1.删除即可。
2.在每次需要调用Excel的语句之前重新调用对象 Set xlapp = CreateObject("Excel.Application")
还是那句话,调试代码的时候,在报错位置加中断和监视对象,看看是否变量是否正常
2018-02-28 08:55
start1901
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2018-2-26
  得分:0 
回复 4楼 风吹过b
我粘贴的时候怕太长,删了一部分,这个不是问题所在,
刚刚解决了,原因是select与selection没匹配好,
也感谢您的帮助
2018-03-07 22:13
start1901
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2018-2-26
  得分:0 
回复 5楼 xiangyue0510
我粘贴的时候怕太长,删了一部分,这个应该不是问题所在,
刚刚解决了,原因是select与selection没匹配好,
也感谢您的帮助
2018-03-07 22:14







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046335 second(s), 9 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved