Excel精英培训网

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

[已解决]急求解决的代码问题

[复制链接]
发表于 2013-3-29 21:26 | 显示全部楼层 |阅读模式
在做一个表册汇总时,执行命令出错,点调试发现一行代码出黄色,但如果把分表中的记录字数减少又能正常汇总,但表中的数字又不能删减,应该如何改代码?具体请大家测试附件。
最佳答案
2013-3-29 21:36
  1. Sub 汇总()
  2.     Dim file$, path$
  3.     Dim wb As Workbook
  4.     Dim arr(1 To 5000, 1 To 3), lCount&
  5.     Dim arrPos, j As Byte
  6.     Application.ScreenUpdating = False
  7.     arrPos = Array("a3", "b3")
  8.     path = ThisWorkbook.path & Application.PathSeparator
  9.     file = Dir(path & "*.xls", vbNormal + vbDirectory)

  10.     Do While Len(file) > 0
  11.         If file <> ThisWorkbook.Name Then
  12.             lCount = lCount + 1
  13.                Set wb = GetObject(path & file)
  14.             With wb.Worksheets("sheet1")
  15.                 For j = 1 To UBound(arr, 2) - 1
  16.                     arr(lCount, j) = "'" & .Range(arrPos(j - 1))
  17.                 Next
  18.                 arr(lCount, 3) = .Range("c2") & ":" & .Range("c3") & "," & _
  19.                                  .Range("d2") & ":" & .Range("d3") & "," & _
  20.                                  .Range("a4") & ":" & .Range("b4").Text & "," & _
  21.                                  .Range("c4") & ":" & .Range("d4") & "," & _
  22.                                  .Range("a5") & ":" & .Range("b5") & "," & _
  23.                                  .Range("a6") & ":" & .Range("b6") & "," & _
  24.                                  .Range("a7") & ":" & .Range("b7") & "," & _
  25.                                  .Range("a8") & ":" & .Range("b8") & "."
  26.             End With
  27.             wb.Close False
  28.         End If
  29.         file = Dir
  30.     Loop
  31.     Range("a" & Cells(Rows.Count, 1).End(xlUp).Row + 1).Resize(lCount, 3) = arr
  32.     Range("a1").CurrentRegion.Borders.LineStyle = xlContinuous
  33.     Application.ScreenUpdating = True
  34.     MsgBox "汇总完成"
  35. End Sub
复制代码

汇总表程序.zip

20.52 KB, 下载次数: 6

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-3-29 21:33 | 显示全部楼层
不是说了嘛,你所数组换成固定的就行了。因为转置的时候函数限制。
回复

使用道具 举报

发表于 2013-3-29 21:36 | 显示全部楼层    本楼为最佳答案   
  1. Sub 汇总()
  2.     Dim file$, path$
  3.     Dim wb As Workbook
  4.     Dim arr(1 To 5000, 1 To 3), lCount&
  5.     Dim arrPos, j As Byte
  6.     Application.ScreenUpdating = False
  7.     arrPos = Array("a3", "b3")
  8.     path = ThisWorkbook.path & Application.PathSeparator
  9.     file = Dir(path & "*.xls", vbNormal + vbDirectory)

  10.     Do While Len(file) > 0
  11.         If file <> ThisWorkbook.Name Then
  12.             lCount = lCount + 1
  13.                Set wb = GetObject(path & file)
  14.             With wb.Worksheets("sheet1")
  15.                 For j = 1 To UBound(arr, 2) - 1
  16.                     arr(lCount, j) = "'" & .Range(arrPos(j - 1))
  17.                 Next
  18.                 arr(lCount, 3) = .Range("c2") & ":" & .Range("c3") & "," & _
  19.                                  .Range("d2") & ":" & .Range("d3") & "," & _
  20.                                  .Range("a4") & ":" & .Range("b4").Text & "," & _
  21.                                  .Range("c4") & ":" & .Range("d4") & "," & _
  22.                                  .Range("a5") & ":" & .Range("b5") & "," & _
  23.                                  .Range("a6") & ":" & .Range("b6") & "," & _
  24.                                  .Range("a7") & ":" & .Range("b7") & "," & _
  25.                                  .Range("a8") & ":" & .Range("b8") & "."
  26.             End With
  27.             wb.Close False
  28.         End If
  29.         file = Dir
  30.     Loop
  31.     Range("a" & Cells(Rows.Count, 1).End(xlUp).Row + 1).Resize(lCount, 3) = arr
  32.     Range("a1").CurrentRegion.Borders.LineStyle = xlContinuous
  33.     Application.ScreenUpdating = True
  34.     MsgBox "汇总完成"
  35. End Sub
复制代码
回复

使用道具 举报

发表于 2013-3-29 21:37 | 显示全部楼层
测试你来,有问题再说。
回复

使用道具 举报

 楼主| 发表于 2013-3-29 21:37 | 显示全部楼层
hwc2ycy 发表于 2013-3-29 21:33
不是说了嘛,你所数组换成固定的就行了。因为转置的时候函数限制。

其实非常感谢你帮我写的这个代码,但我实在是读不懂,所以你说的数组换成固定应该如何操作还真不知道啊,麻烦再帮一下
回复

使用道具 举报

 楼主| 发表于 2013-3-29 21:39 | 显示全部楼层
hwc2ycy 发表于 2013-3-29 21:36

非常感谢,现在这个不出问题了
回复

使用道具 举报

 楼主| 发表于 2013-3-29 22:05 | 显示全部楼层
gaogege852 发表于 2013-3-29 21:39
非常感谢,现在这个不出问题了

麻烦你再帮我看一下我提的另一个表册汇总问题,谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 08:19 , Processed in 0.279571 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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