VBA宏运行时,提示下标9错误?

我试图在Excel 2010中创建一个VBA,该文件从另一个电子表格中获取我不允许更改的信息,并将其与我的宏内置的电子表格配合使用。以下是我的代码:

Workbooks("RITE 上的站点,并且无法找到我收到运行时错误的原因。 工作簿已经打开,我尝试添加尾随标题的所有内容,我尝试删除.xls ,甚至在变量中完成了上述所有操作。 有任何想法吗?
  

确保扩展是正确的。 如果这是您指出的Excel 2010文件,则可能需要更新代码以反映“RITE 1624”文件的扩展名(例如2010 Excel工作簿的.xlsx,2010 Excel宏工作簿的.xlsm,或者任何扩展名。

为确保您具有正确的工作簿名称,您可以在即时窗口中打印每个工作簿的名称。

打开VBA编辑器,然后按Ctrl + G打开立即窗口(或执行查看>立即窗口)。 然后运行以下宏:

请注意,这将为您提供与宏相同的Excel实例中所有打开工作簿的名称。 如果您的RITE 1624文件位于单独的Excel实例中,那么您的宏所在的实例将无法看到该文件(并且它不会出现在上面的OpenWkbkNames代码的输出中)。 解决此问题的最简单方法是从包含宏的Excel实例中打开所有必需的文件。

  
  • @Comintern已经为你提供了一个可行的解决方案,但是这段代码不会污染你的立即窗口,并且使用隐藏的_CodeName属性来改变表名,而不是访问vbComponents集合。 它还使用早期绑定的Worksheet赋值给wks ,然后使用With块,因为它正在访问1个以上的wks成员。 有趣的是,VBProject成员使用的位置很重要。 Dim wbk As Workbook

  • 为确保您具有正确的工作簿名称,您可以在即时窗口中打印每个工作簿的名称。 打开VBA编辑器,然后按Ctrl + G打开立即窗口(或执行查 ...

  • 不会有文件扩展名,因为您还没有保存它。 您可以通过使用对象变量来避免所有这些问题 Dim wb as work ...

  • Popsize等...除非您将Option Base 1添加到模块的顶部。 数组的默认基数为0.我觉得最好明确指出数组的下限和上限,因为默认值可以是0或1,具体取决 ...

只能在数组和集合的定义范围内访问元素和成员。 此错误的原因及解决方案如下:

  • 引用了不存在的数组元素。 下标可能大于或小于可能的下标范围,或者此时没有在应用程序中为数组分配维度。 检查数组,验证其上下限范围。 如果您正在使用被重新设置维度的数组,则使用 UBoundLBound 设置数组访问条件。 如果索引被指定为,请检查变量名称的拼写。

  • 您声明了数组,但没有指定元素数。 例如,以下代码将导致此错误:

    Visual Basic 未隐式将未指定数组的维度范围设置为 0-10。 相反,您必须使用 DimReDim 显式指定数组中的元素数。

  • 引用了不存在的集合成员。 尝试使用 For Each...Next 构造而非指定索引元素。

  • 使用了下标的简写形式,这会隐式指定无效元素。 例如,将 ! 运算符用于集合时, ! 隐式指定一个键。 例如 object!keyname. value 相当于 object. item (keyname). value。 在此情况下,如果 keyname 表示集合中的无效键,则会发生错误。 要修复此错误,可以对集合使用有效的键名称或索引。

有兴趣开发跨扩展 Office 体验的解决方案吗? 查看新的 。 与VSTO外接程序和解决方案相比,Office外接程序占用的空间较小,您可以使用几乎任何Web编程技术(例如HTML5,JavaScript,CSS3和XML)来构建它们。

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 ,获取有关如何接收支持和提供反馈的指南。

导读 大家好,我是绿色消费网的编辑小林。我会为你解答以上问题。最近看到网友在搜索Excel VBA下标越界的原因分析与解决方法,的信息,于是小

大家好,我是绿色消费网的编辑小林。我会为你解答以上问题。最近看到网友在搜索Excel VBA下标越界的原因分析与解决方法,的信息,于是小林编了一个关于Excel VBA下标越界的原因分析与解决方法的教程给大家学习。

VBA初学者经常遇到下标出界的情况。

虽然下标超范围有各种原因,但下标超范围的提示框终究会出现,因为对象不存在或者超范围,如下图所示:

如果在使用数组时数组的下标超过了数组的可接受范围,就会出现这个错误,这个范围可以由系统自定义或自带。

因为arr1数组是1到5,但这里是10,它会报告下标越界错误。

一个excel工作表表有三个工作表

这里的Sheets(4)明显超过了3 sheets,所以也会报告下标越界错误。

总之,造成“下标出界”错误的情况很多。

下标越界错误可能有以下原因和解决方法:

对不存在的数组元素的引用。

下标大于或小于可能的下标范围,或者应用程序中这一侧的数组没有指定的范围。检查数组的声明以确认其上限和下限。如果使用具有新指定范围的数组,应该使用UBound和LBound函数来确定数组访问。如果索引被指定为变量,请检查变量名的拼写。

声明数组时没有指定元素的数量。

引用了不存在的集合成员。尝试使用每个人.下一个结构,而不是指定元素下标。

使用速记下标,结果指定了错误的元素。

下标越界了。没有对应的工作簿。工作表名称写对了吗?

当你再次遇到VBA下标出界错误时,你不会惊慌,至少你大概知道原因。我们可以参考上述思路,通过修改代码来解决下标越界的错误。

本文就为大家讲解到这里了。

我要回帖

更多关于 宏下标越界 的文章

 

随机推荐