Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3269|回复: 12

[已解决]VBA代码运行错误求助

[复制链接]
发表于 2017-6-2 14:43 | 显示全部楼层 |阅读模式
本帖最后由 网络人 于 2017-6-3 08:36 编辑

里面导入数据的代码我修改了一下,就运行报错,帮忙看下是错在那里,按照F列与另外工作薄E列对应名称的A列数据引用到N列的VBA代码修正。具体见附件
最佳答案
2017-6-3 08:29
  1. Private Sub CommandButton1_Click()

  2. Application.ScreenUpdating = False
  3. Application.DisplayAlerts = False

  4. Dim WB As Workbook
  5. Dim F, E
  6. Dim arr

  7. F = False
  8. For Each E In Workbooks
  9.     If E.Name = "2017年新订单进度表.xls" Then
  10.         F = True
  11.         If MsgBox("请关闭当前操作界面中已经打开的【2017年新订单进度表】后再操作!", 32 + 256) = 6 Then
  12.             Exit Sub
  13.         End If
  14.     End If
  15. Next
  16. If F = False Then
  17.     Set fso = CreateObject("scripting.filesystemobject")
  18.     Set fld = CreateObject("Shell.Application").BrowseForFolder(0, "请选择文件夹", 0, 0)
  19.     If fld Is Nothing Then End
  20.     fp = fld.Self.Path
  21.     Workbooks.Open Filename:=fp & "" & "2017年新订单进度表.xls"  '读入
  22.     arr = Sheets("在制(未完成)").UsedRange
  23.     ActiveWorkbook.Close savechanges:=False
  24.     lastrow = Cells(Rows.Count, 6).End(3).Row            '当前工作表
  25.     On Error Resume Next
  26.     For n = 4 To lastrow
  27.         For i = 2 To UBound(arr)
  28.             If ActiveSheet.Cells(n, 6) = arr(i, 5) Then  '前面是当前工作表,后面是数据源工作薄
  29.                 ActiveSheet.Cells(n, 14) = arr(i, 1)
  30.             
  31.             End If
  32.         Next
  33.     Next
  34. End If

  35. Application.ScreenUpdating = True
  36. Application.DisplayAlerts = True
  37. End Sub
复制代码

导入数据的VBA代码.rar

21.9 KB, 下载次数: 3

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-6-2 16:36 | 显示全部楼层
看你的代码好像问题不少
你把要求写出来
别人才能帮你
回复

使用道具 举报

发表于 2017-6-2 17:20 | 显示全部楼层
chart888 发表于 2017-6-2 16:36
看你的代码好像问题不少
你把要求写出来
别人才能帮你

就是按照对应的名称引用另外工作薄的数据
回复

使用道具 举报

 楼主| 发表于 2017-6-2 18:48 | 显示全部楼层
我需要的是黄色区域的名称对应引用另外工作薄对应名称的日期数据
回复

使用道具 举报

 楼主| 发表于 2017-6-2 18:52 | 显示全部楼层
chart888 发表于 2017-6-2 16:36
看你的代码好像问题不少
你把要求写出来
别人才能帮你

按照F列与另外工作薄E列对应名称的A列数据引用到N列的VBA代码修正,附件已经修改
回复

使用道具 举报

发表于 2017-6-2 19:07 | 显示全部楼层

  1. Private Sub CommandButton1_Click()
  2. Application.ScreenUpdating = False
  3. Dim WB As Workbook
  4. Dim F, E
  5.     F = False
  6.     For Each E In Workbooks
  7. If E.Name = "2017年新订单进度表.xls" Then
  8.        F = True
  9.            If MsgBox("请关闭当前操作界面中已经打开的【2017年新订单进度表】后再操作!", 32 + 256) = 6 Then
  10.        Exit Sub
  11. End If
  12. End If
  13.     Next E
  14. If F = False Then
  15.    
  16.     Set fso = CreateObject("scripting.filesystemobject")
  17.     Set fld = CreateObject("Shell.Application").BrowseForFolder(0, "请选择文件夹", 0, 0)
  18.     If fld Is Nothing Then End
  19.    
  20.     fp = fld.Self.Path
  21. Workbooks.Open Filename:=fp & "\2017年新订单进度表.xls"  '读入
  22. arr = Sheets("在制(未完成)").UsedRange
  23. ActiveWorkbook.Close savechanges:=False
  24. lastrow = Cells(Rows.Count, 6).End(3).Row            '当前工作表
  25. For n = 4 To lastrow
  26.     For i = 2 To UBound(arr)
  27.         If Cells(n, 6) = arr(i, 5) Then  '前面是当前工作表,后面是数据源工作薄
  28.             Cells(n, "n") = arr(i, 1)
  29.         End If
  30.     Next i
  31. Next n
  32. End If
  33. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2017-6-2 19:15 | 显示全部楼层

没有改代码吗?还是出现图片这样的错误,不知道是什么原因
QQ图片20170602191556.png
回复

使用道具 举报

 楼主| 发表于 2017-6-3 08:11 | 显示全部楼层
请高手帮忙这个错误的原因在哪里?我只是改了下工作表名称
回复

使用道具 举报

发表于 2017-6-3 08:29 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub CommandButton1_Click()

  2. Application.ScreenUpdating = False
  3. Application.DisplayAlerts = False

  4. Dim WB As Workbook
  5. Dim F, E
  6. Dim arr

  7. F = False
  8. For Each E In Workbooks
  9.     If E.Name = "2017年新订单进度表.xls" Then
  10.         F = True
  11.         If MsgBox("请关闭当前操作界面中已经打开的【2017年新订单进度表】后再操作!", 32 + 256) = 6 Then
  12.             Exit Sub
  13.         End If
  14.     End If
  15. Next
  16. If F = False Then
  17.     Set fso = CreateObject("scripting.filesystemobject")
  18.     Set fld = CreateObject("Shell.Application").BrowseForFolder(0, "请选择文件夹", 0, 0)
  19.     If fld Is Nothing Then End
  20.     fp = fld.Self.Path
  21.     Workbooks.Open Filename:=fp & "" & "2017年新订单进度表.xls"  '读入
  22.     arr = Sheets("在制(未完成)").UsedRange
  23.     ActiveWorkbook.Close savechanges:=False
  24.     lastrow = Cells(Rows.Count, 6).End(3).Row            '当前工作表
  25.     On Error Resume Next
  26.     For n = 4 To lastrow
  27.         For i = 2 To UBound(arr)
  28.             If ActiveSheet.Cells(n, 6) = arr(i, 5) Then  '前面是当前工作表,后面是数据源工作薄
  29.                 ActiveSheet.Cells(n, 14) = arr(i, 1)
  30.             
  31.             End If
  32.         Next
  33.     Next
  34. End If

  35. Application.ScreenUpdating = True
  36. Application.DisplayAlerts = True
  37. End Sub
复制代码

-导入数据的VBA代码.zip

36.55 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2017-6-3 08:34 | 显示全部楼层

还是错误。arr(i, 5)出现的ERROR2023的错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 05:34 , Processed in 0.338500 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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