You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA循环处理多月份考勤数据时数组无法正常填充问题

问题根因

给attendanceArr赋值的Range对象未绑定所属工作表,VBA会默认读取当前活动工作表的对应范围:

  • 循环同时处理9月、10月数据时,9月分支调用populateAttendance后,活动工作表被切换为「September」,后续处理10月时,是在「September」工作表中读取A1302到对应列2211的范围,该范围无有效数据,因此数组为空
  • 仅循环处理10月时,没有触发其他月份的工作表切换操作,活动工作表始终为原始数据源工作表attendanceSheet,因此可以正常读取数据
修复方法

将attendanceArr的赋值语句加上工作表限定即可:

' 原代码
attendanceArr = Range("A" & startRow & ":" & attendanceSheetLastLetter & endRow)
' 修改为
attendanceArr = attendanceSheet.Range("A" & startRow & ":" & attendanceSheetLastLetter & endRow)
可选优化建议
  • findLastRow函数的返回值建议改用Long类型,Excel 2007及之后版本最大行数为1048576,超出了Integer类型的上限(32767),容易出现溢出错误
  • 每次调用Range.Find方法时,建议显式指定所有参数,避免上一次Find操作遗留的参数设置影响本次查找结果

内容的提问来源于stack exchange,提问作者Neo Anderson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:09:02