设置:
- 从数据库导入数据的 Excel 工作簿 (VBA - SQL)
- 我想从第一个Excel工作簿运行"UpdateAll"宏并获取一些更新数据的Excel工作簿
我运行此代码。
Sub RunMacro()
Run "'E:programs(x86)Dropboxworkexceldata.xlsm'!UpdateAll"
End Sub
返回的错误:
下标超出范围(错误 9)
"调试"导致:
Sub UpdateAll()
daysBack = Sheets("Update").Range("B1").Value '<--- Called out as the error
Call getDatabase11DATA
Call correctData
End Sub
常见问题:
">- 你真的有一张叫"更新"的表吗?">
- "你知道它区分大小写吗?">
- "你用 daysBack 变量做什么"> ">
- 什么是"B1"?">
我对所有这些问题的回答:
- 是的
- 是的
- daysBack 变量应该是 0 到 365 之间的数字,如 in;"从数据库中检索数据时,我想返回多少天?(0 == 仅限今天)
- B1 单元格中的默认值为 0。
活动工作簿中没有Update
工作表。这:
Sheets("Update")
隐式是:
ActiveWorkbook.Sheets("Update")
1)ActiveWorkbook
不是您期望的书,或者 2) 工作表名称拼写错误;查找(和删除)前导空格或尾随空格。
请注意,Sheets
集合还可以包含图表;如果要查找工作表,请使用Worksheets
集合。
将解决方案从问题移动到答案:
编辑:解决方案是将第二代码中的第二行编辑为这种格式:
daysBack = Workbooks("name_of_workbook_containing_update_sheet").Sheets("Update").Range("B1").Value
就我而言,这将是:
daysBack = Workbooks("data").Sheets("Update").Range("B1").Value