系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、错误描述
  • 二、原因调查
  • 总结

前言

一、错误描述

将Excel所有工作表,汇总到一个工作表中:

在thisworkbook中运行如下:

Sub 合并所有工作表_在所有行标注工作表名字_无视空行空列_考虑到不规范的多一点的行和列()Dim row_num As Long, column_num As Long, row_num_temp As Long, column_num_temp As Long, row_num_merge As Long, column_num_merge As Long, i As Long, arr() As LongWorksheets.Add.Name = "合并表"Sheets("合并表").Move before:=Sheets(1)For i = 2 To Worksheets.CountWorksheets(i).Activate'UsedRange.row,代表使用的第一个行数,在有空行的时候体现,同理,UsedRange.column,代表使用的第一个列数,在有空列的时候体现'那么使用第一行 + 已使用的行数,这样可以规避顶部/左侧有空行,导致获取已使用行号的数据不符合预期(老赵,如果你看到这里不懂,就自己拆开代码,加上空行空列体会一下)row_num = Worksheets(i).UsedRange.Row + Worksheets(i).UsedRange.Rows.Count - 1column_num = Worksheets(i).UsedRange.Column + Worksheets(i).UsedRange.Columns.Count - 1'如果格式很不规范,那么获取的UsedRange.rows.count就可能是整个表格的行数,所以要规避这种情况,如果相同,就让他减1If row_num = Worksheets(i).Rows.Count Then row_num = row_num - 1If column_num = Worksheets(i).Columns.Count Then column_num = column_num - 1'相当于遍历所有的列,都按ctrl + ↑,取数组的最大值ReDim arr(1 To column_num)For j = LBound(arr) To UBound(arr)row_num_temp = Worksheets(i).Cells(row_num + 1, j).End(xlUp).Rowarr(j) = row_num_tempNextDebug.Print (Application.WorksheetFunction.Max(arr))row_num_temp = Application.WorksheetFunction.Max(arr) '赋予最大值,确定最大的有数据的行数'相当于遍历所有的行,都按ctrl + ←,取数组的最大值'Erase arr 清空数组,但是也可以不用,直接用ReDim也可以,如果要保留数组内容,需要加一个preserveReDim arr(1 To row_num_temp)For j = LBound(arr) To UBound(arr)column_num_temp = Worksheets(i).Cells(j, column_num + 1).End(xlToLeft).Columnarr(j) = column_num_tempNextDebug.Print (Application.WorksheetFunction.Max(arr))column_num_temp = Application.WorksheetFunction.Max(arr) '赋予最大值,确定最大的有数据的列数Worksheets(i).Range(Cells(1, 1), Cells(row_num_temp, column_num_temp)).SelectSelection.Copy Sheets("合并表").Cells(row_num_merge + 1, 2)Worksheets("合并表").Cells(row_num_merge + 1, 1) = Worksheets(i).Namerow_num_merge = Sheets("合并表").UsedRange.Rows.CountNext'将首行标题转为所有行(选择空值,=上面的数据)Worksheets("合并表").ActivateColumns("A:A").SelectSelection.SpecialCells(xlCellTypeBlanks).SelectApplication.CutCopyMode = FalseSelection.FormulaR1C1 = "=R[-1]C"Columns("A:A").SelectSelection.CopySelection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=FalseApplication.CutCopyMode = FalseRange("A1").Select
End Sub


新建模块,运行如下:

二、原因调查

发现是工作表中数据存在异常,例如:

最下面存在个别数据,导致复制粘贴的时候单元格数量不足,形成此错误;


总结

分享:
“难道生命这漫长进程中所有的努力和希望,都是为了那飞娥扑火的一瞬间?”“飞蛾并不觉得阴暗,它至少享受了短暂的光明。"

【VBA报错1】--vba代码运行时错误1004 应用程序定义或对象定义错误相关推荐

  1. 关于vba代码运行时错误1004 应用程序定义或对象定义错误问题

    一.错误描述 将Excel所有工作表,汇总到一个工作表中: 在thisworkbook中运行如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  2. [VBA]EXCEL表格,运行VBA报错:运行时错误‘9’ 下标越界

    代码目的: 点击工作表,自动实现表格数据清空 问题: 遇到报错提示"下标越界" 错误及解决过程: 点击"钢管重量排序"工作表,弹出窗口报错.检查excel文件发 ...

  3. excel vba “运行时错误1004,应用程序定义或对象定义错误”

    新做的wintogo系统,装了office2021,拿出以前的一个excel程序跑了一下,报错"运行时错误1004,应用程序定义或对象定义错误",于是网上搜索,总结大部分文章给的建 ...

  4. 微信小程序 运行报错已被代码依赖分析忽略

    如何解决"Error: xxx.js 已被代码依赖分析忽略,无法被其他模块引用"报错? 这问题我找了好久,官网还推荐了解决办法 大家也可以看看↓ 如何解决"Error: ...

  5. postman安装报错 无法定位_VS2010 + winxp 无法定位程序输入点GetTickCount64 在动态链接库kernel32.dll上 错误...

    winxp系统,使用VS2010, 在使用boost中的thread中的sleep的时候出现 "无法定位程序输入点GetTickCount64 在动态链接库kernel32.dll上&quo ...

  6. 创建会计科目(FSP0/FS00)报错“损益报表科目类型在科目表 ZT01 中未定义”

    文章目录 一.问题再现及初步分析 二.解决方法和实操验证 2.1 解决方法 2.2 实操验证 一.问题再现及初步分析 Step1.定义公司代码 Step2.定义会计科目表 Step3.给科目表分配公司 ...

  7. 解决报错:PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。PermissionError: [WinError 5] 拒绝访问。

    本博客帮你解决两个问题: 1. 当运行 'python -m pip install --upgrade pip' 时,出现 PermissionError: [WinError 5] 拒绝访问,该如 ...

  8. oracle导出数据库中表出现导出报错(EXP-00003)未找到段 (0,0) 的存储定义

    前两天在使用oracle数据库,使用dba用户利用PL/SQL 中的tool中export table导出表结构时,出现了如下问题: 好多张表"报错(EXP-00003)未找到段 (0,0) ...

  9. 解决金仓数据库安装时安装VC++2013报错问题:不受信任提供程序信任的根证书中终止

    解决金仓数据库安装时安装VC++2013报错问题:不受信任提供程序信任的根证书中终止 安装微软的信任证书: 1.点击链接下载微软证书:http://download.microsoft.com/dow ...

最新文章

  1. 优先级队列(头条面试题)
  2. 无需任何启动盘,在windows系统上一键安装linux(ubuntu)双系统的方法!
  3. object的实例是 python_Python:type、object、class与内置类型实例
  4. go语言服务器运行,Go语言实现Web服务器
  5. (计算机组成原理)第二章数据的表示和运算-第一节2:BCD码
  6. 读书笔记--《MicroPython入门指南》
  7. java对excel经行读写
  8. mysql jdbc百度_mysql8.0 jdbc连接注意事项
  9. mysql update修改数据_MYsql如何用update语句修改数据,值得一看
  10. 双变量空间自相关_空间计量经济学的发展及其应用,经济模型总会需要
  11. 用随机过程进行系统识别
  12. 5本免费的Java电子书
  13. 大数据经典案例有哪些?
  14. 安装windows server 2003两种授权模式之间的区别
  15. oracle em 证书错误,导航阻止
  16. 23 Pictures That Prove Society Is Doomed
  17. hangfire mysql_.NET之Hangfire快速入门和使用
  18. Win8.1 取消开机密码
  19. SMPL源码实现及相关问题
  20. 会声会影x9序列号下载安装教程详解

热门文章

  1. 怎么在word中加入可以打勾的框框?
  2. 怎么才能让中国年轻人爱上种地?
  3. 2010 01 13 开博
  4. 纳斯达克“乱打”中国牌 请林依轮敲闭市钟
  5. java计算机毕业设计面向对象程序设计课程网站源码+系统+mysql数据库+lw文档
  6. linux文件夹介绍
  7. 出品公司 发行公司 院线的区别
  8. 小米linux终端,小米4 ubuntu touch 系统安装教程 ROM 安装 cancro touch ubuntu
  9. 半波整流变压器电流波形仿真
  10. 基于Android的五子棋游戏APP设计