ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 汇总代码出错,请修改,谢谢

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-7-8 16:18 | 显示全部楼层 |阅读模式
VB入门,总是汇总出错行,请帮忙修改下。
要求:
汇总固定格式,任意文件名的EXCEL中的固定那行。
固定格式如下
EXCEL图片.jpg

汇总对象是黄色那行。我半抄半学弄的代码如下:
Sub Macro1()
    Dim MyPath$, MyName$, sh As Worksheet, arr
    Set sh = ActiveSheet
    MyPath = ThisWorkbook.Path & "\"
    MyName = Dir(MyPath & "*.xls")
    Application.ScreenUpdating = False
    [a1].CurrentRegion.Offset(2).ClearContents
    Do While MyName <> ""
        If MyName <> ThisWorkbook.Name Then
            With GetObject(MyPath & MyName)
                arr = .Sheets(1).[a1].CurrentRegion.Offset(1)
                sh.[a65536].End(xlUp).Offset(1).Resize(UBound(arr) - 3, 9) = arr
                .Close False
            End With
        End If
        MyName = Dir
    Loop
    Application.ScreenUpdating = True
    MsgBox "ok"
End Sub



发现每次都是从标题下面那里开始汇总,泪崩。不懂Resize的人请教如何修改。谢谢了!

TA的精华主题

TA的得分主题

发表于 2014-7-8 16:58 | 显示全部楼层
arr = .Sheets(1).[a1].CurrentRegion.Offset(1)
sh.[a65536].End(xlUp).Offset(1).Resize(UBound(arr) - 3, 9) = arr
将上面两句改成下面两句试试:
arr=.sheets(1).range("a4").resize(1,9)
sh.[a65536].End(xlUp).Offset(1,0).Resize(1, 9) = arr

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-8 17:08 | 显示全部楼层
不明白RESIZE的用法。谁给科普下,我百度过,也不太懂。哈哈
谢谢楼上的哥哥!

TA的精华主题

TA的得分主题

发表于 2014-7-8 18:32 | 显示全部楼层
VBA中的帮助。楼主要习惯使用帮助。
Resize 属性
参阅应用于示例特性调整指定区域的大小。返回 Range 对象,该对象代表调整后的区域。

expression.Resize(RowSize, ColumnSize)
expression      必需。该表达式返回要调整大小的 Range 对象。

RowSize      Variant 类型,可选。新区域中的行数。如果省略该参数,则该区域中的行数保持不变。

ColumnSize      Variant类型,可选。新区域中的列数。如果省略该参数。则该区域中的列数保持不变。

示例
本示例调整 Sheet1 中选定区域的大小,使之增加一行和一列。

Worksheets("Sheet1").Activate
numRows = Selection.Rows.Count
numColumns = Selection.Columns.Count
Selection.Resize(numRows + 1, numColumns + 1).Select
               
本示例假定在 Sheet1 中有一个包含标题行的表。本示例选定该表,但不选定标题行。运行本示例之前,活动单元格必须处于该表中。

Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
    tbl.Columns.Count).Select

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-12 15:26 | 显示全部楼层
谢谢大神~~~~~~~~~~~~~~~~~mobai
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 19:19 , Processed in 0.031670 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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