所有的引用在我的VBA代码是正确的,但我仍然得到一个“下标超出范围”的错误?
我偶然发现了一个错误,这个错误在隐藏在互联网上几个小时后似乎无法解决,我发现了一些类似的错误,但似乎并不适合这种情况。
设置很简单。 我有:
- 从数据库导入数据的Excel工作簿(VBA-SQL)
- Excel工作簿,我想从第一个Excel工作簿中运行“UpdateAll”macros,并获取一些更新的数据
然而,当我运行这个简单的代码时,这就是棘手的问题。
1. Sub RunMacro() 2. Run "'E:\programs(x86)\Dropbox\work\excel\data.xlsm'!UpdateAll" 3. End Sub
由于错误“下标超出范围(错误9)”是唯一返回的,我随后按“debugging”button,这导致我的错误, 据说 :
1. Sub UpdateAll() 2. daysBack = Sheets("Update").Range("B1").Value <--- Called out as the error 3. Call getDatabase11DATA 4. Call correctData 5. End Sub
现在你们会说; “你真的有一张名为”更新“的工作表,”你知道它是区分大小写吗?“,你用什么”daysBack“variables为”和“什么是”B1“?
我的答案是:是的,是的 –
daysBackvariables应该是一个介于0到365之间的数字; “从数据库中检索数据时,我想返回多less天?”。 (0 ==今天只)
B1单元格中的默认值是0。
现在这是我的一个问题:
你能不能在第二个代码中写第二行来简单地从单元中获取一个值?
活动工作簿中没有Update
表单。 这个:
Sheets("Update")
含蓄地说:
ActiveWorkbook.Sheets("Update")
1) ActiveWorkbook
不是你期望的书,或者2)拼写错误的工作表名称; 查看(并删除)前导或尾随空格。
请注意, Sheets
集合也可以包含图表; 如果您正在查找工作表 ,请使用Worksheets
集合。
从问题移动解决scheme:
编辑:解决scheme是编辑第二行代码中的第二行到这种格式:
daysBack = Workbooks("name_of_workbook_containing_update_sheet").Sheets("Update").Range("B1").Value
在我的情况下是:
daysBack = Workbooks("data").Sheets("Update").Range("B1").Value