ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 595|回复: 1

代码的功能正确运行,但是做成按钮却不能运行,这是为什么

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-6-26 21:16 | 显示全部楼层 |阅读模式
我有一段代码,实现的是:打开任意一个xls文档,然后模块中插入这段代码,运行,就可以浏览文件夹打开想要被按内容拆分的excel文档,然后选择保留几行表头,按哪一列拆分。这个代码多次测试都无误。但是我插入一个按钮,将代码复制进去之后,操作同样的文件却出错,这是什么原因?那个按钮自带Private Sub OptionButton1_Click() 我把自己的sub 和 end都删除了的
  1. Sub 拆分表()
  2. Application.ScreenUpdating = False
  3. Dim clm_d  As Integer
  4. Dim mycell As Range
  5. Dim nodupes As New Collection
  6. Dim rngop As Range
  7. Set ac = ActiveSheet
  8. Dim myr As Range
  9. Dim lastrow As Integer
  10. Dim myr1 As Range
  11. Dim baoliu As Integer
  12. Dim acn As String
  13. Dim st As String
  14. Dim st1 As String
  15. st = Application.GetOpenFilename
  16. Workbooks.Open (st)
  17. st1 = ActiveWorkbook.Path
  18. baoliu = Application.InputBox(prompt:="在有几个sheet情况下,将页面转到要拆分的sheet再操作,要保留几行表头?(注意隐藏行)", Title:="选择所要保留的表头", Type:=1)

  19. clm_d = Application.InputBox(prompt:="要按哪一列拆分?(注意隐藏列)", Title:="选择拆分列", Type:=1)

  20. acn = ActiveSheet.Name
  21. Set myr = activesheet.Range(Cells(1, 1), Cells(baoliu, Application.WorksheetFunction.Max(Range("A1").End(xlToRight).Column, Range("A2").End(xlToRight).Column)))

  22. myr.Copy Destination:=rangePasteSpecial
  23. Sheets.Add after:=ActiveSheet
  24. ActiveSheet.Name = "辅助"
  25. ActiveSheet.Paste
  26. Set myr1 = ActiveSheet.Range(Cells(1, 1), Cells(baoliu, Application.WorksheetFunction.Max(Range("A1").End(xlToRight).Column, Range("A2").End(xlToRight).Column)))

  27. Worksheets(acn).Activate
  28. For Each mycell In activesheet.Range(Cells(baoliu + 1, clm_d), (activesheet.Cells(baoliu + 1, clm_d).End(xlDown)))
  29. On Error Resume Next
  30.   nodupes.Add mycell.Value, CStr(mycell.Value)
  31. On Error Resume Next
  32. Next mycell
  33. On Error GoTo 0


  34. Set rngop = Worksheets(acn).UsedRange
  35. For Each Item In nodupes
  36. rngop.AutoFilter Field:=clm_d, Criteria1:=Item
  37. rngop.Copy
  38. Sheets.Add after:=ActiveSheet
  39. ActiveSheet.Name = Item
  40. ActiveSheet.Paste Destination:=Worksheets(Item).Range(Cells(baoliu + 1, 1), Cells(baoliu + 1, 1).End(xlDown))
  41. Rows(baoliu + 1).Delete
  42. Worksheets("辅助").Activate

  43. myr1.Copy Destination:=rangePasteSpecial

  44. Worksheets(Item).Activate

  45. Range(Cells(1, 1), Cells(baoliu, Application.WorksheetFunction.Max(Range("A1").End(xlToRight).Column, Range("A2").End(xlToRight).Column))).Select
  46. ActiveSheet.Paste

  47. Next Item

  48. rngop.AutoFilter
  49. Worksheets(acn).Activate
  50. Application.ScreenUpdating = True

  51. Dim sht As Worksheet
  52.   
  53.   Application.ScreenUpdating = False
  54.   Application.DisplayAlerts = False
  55.   Worksheets("辅助").Delete
  56.   Worksheets(acn).Delete
  57.   For Each sht In Sheets
  58.   If IsEmpty(sht.UsedRange) Then
  59.   sht.Delete
  60.   Else
  61.   sht.Copy
  62.   ActiveWorkbook.SaveAs Filename:=st1 & "" & sht.Name & ".xls"
  63.   ActiveWorkbook.Close
  64.   End If
  65.   Next

  66.   Application.DisplayAlerts = True
  67.   Application.ScreenUpdating = True
  68. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2017-6-27 09:22 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 20:26 , Processed in 0.023904 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表