Vba 按名称引用工作表返回“;下标超出范围“;错误
设置:Vba 按名称引用工作表返回“;下标超出范围“;错误,vba,excel,Vba,Excel,设置: 从数据库导入数据的Excel工作簿(VBA-SQL) Excel工作簿,我想从第一个Excel工作簿运行“UpdateAll”宏,并获取一些更新的数据 我运行这个代码 Sub RunMacro() 运行“'E:\programs(x86)\Dropbox\work\excel\data.xlsm'!UpdateAll” 端接头 返回的错误为: 下标超出范围(错误9) “调试”导致: Sub-UpdateAll() daysBack=Sheets(“Update”).Range(“B1”
Sub RunMacro()
运行“'E:\programs(x86)\Dropbox\work\excel\data.xlsm'!UpdateAll”
端接头
返回的错误为:
下标超出范围(错误9)
“调试”导致:
Sub-UpdateAll()
daysBack=Sheets(“Update”).Range(“B1”).Value'活动工作簿中没有Update
sheet。这:
Sheets("Update")
含蓄地说:
ActiveWorkbook.Sheets("Update")
要么1)ActiveWorkbook
不是您期望的书,要么2)工作表名称错误;查找(并删除)前导空格或尾随空格
请注意,表格
集合也可以包含图表;如果要查找工作表,请使用工作表
集合。活动工作簿中没有更新
工作表。这:
Sheets("Update")
含蓄地说:
ActiveWorkbook.Sheets("Update")
要么1)ActiveWorkbook
不是您期望的书,要么2)工作表名称错误;查找(并删除)前导空格或尾随空格
请注意,表格
集合也可以包含图表;如果您正在寻找工作表,请使用工作表
集合。将解决方案从问题移动到答案:
编辑:解决方案
将第二个代码中的第二行编辑为以下格式:
daysBack = Workbooks("name_of_workbook_containing_update_sheet").Sheets("Update").Range("B1").Value
就我而言,这将是:
daysBack = Workbooks("data").Sheets("Update").Range("B1").Value
将解决方案从问题移至答案:
编辑:解决方案
将第二个代码中的第二行编辑为以下格式:
daysBack = Workbooks("name_of_workbook_containing_update_sheet").Sheets("Update").Range("B1").Value
就我而言,这将是:
daysBack = Workbooks("data").Sheets("Update").Range("B1").Value
我再问一个问题。您确定要在正确的工作簿中查找工作表“更新”吗?在工作表之前没有任何内容<代码>工作表
指的是您现在可以在屏幕上看到的任何工作表,即活动工作表
。非常感谢,@EganWolf,此评论与您对下面答案的评论结合起来,现在非常有意义。@emilreintert,不客气:)我再问一个问题。您确定要在正确的工作簿中查找工作表“更新”吗?在工作表之前没有任何内容<代码>工作表
指的是您现在在屏幕上可以看到的任何工作表,即活动工作表
。非常感谢,@EganWolf,这条评论加上您对下面答案的评论,现在非常有意义。@emilreintert,不客气:)下面是关于它的有趣之处。我给一个命令按钮分配了完全相同的代码,它工作得非常好。但该按钮位于更新工作表中-这可能是也可能不是按下该按钮时代码工作的原因,因为代码引用了同一工作表中的数据?这使活动工作簿成为包含“更新”工作表的工作簿。。。所以,是的,这有助于Excel解决问题。这是有道理的,穆格先生。谢谢。因此,解决方案是将第二个代码中的第二行编辑为:daysBack=Worksheets(“Update”).Range(“B1”).Value?@EmilReinert。这不会改变任何内容,只会使工作表从正确的集合中拉出。修复方法是在您拉取活动工作表时激活正确的工作簿。@emilreIntert否,解决方案可以是daysBack=Workbooks(“包含更新工作表的工作簿名称”).Sheets(“更新”).Range(“B1”).Value
,现在有一个有趣的地方。我给一个命令按钮分配了完全相同的代码,它工作得非常好。但该按钮位于更新工作表中-这可能是也可能不是按下该按钮时代码工作的原因,因为代码引用了同一工作表中的数据?这使活动工作簿成为包含“更新”工作表的工作簿。。。所以,是的,这有助于Excel解决问题。这是有道理的,穆格先生。谢谢。因此,解决方案是将第二个代码中的第二行编辑为:daysBack=Worksheets(“Update”).Range(“B1”).Value?@EmilReinert。这不会改变任何内容,只会使工作表从正确的集合中拉出。修复方法是在拉取活动工作表时激活正确的工作簿。@EmilreInsert否,解决方案可以是daysBack=Workbooks(“包含更新工作表的工作簿名称”)。工作表(“更新”)。范围(“B1”)。值