VBA语句 子过程或函数未定义

VBA语句 子过程或函数未定义,第1张

ActiveCellFormula = "=B" & Ro1 & -Sum("L" & Ro1 + 1 & ":M" & Ro)

语句的变量引号不匹配,sum应该是公式的一部分,而不是把sum计算结果作为公式一部分,修改为:

ActiveCellFormula = "=B" & Ro1 & "-Sum(L" & (Ro1 + 1) & ":M" & Ro1 & ")"

假设变量Ro1值为2,那么生成的公式为:

=B2-SUM(L1:M2)

故障分析:一般这种情况是跟宏里面的VBA编辑器有关系,或者是用户版本几用户安装了新的工具箱所导致工具宏无法运行,出现出现“子过程或函数未定义”的故障。

解决方法:

一、如果你制作了worddot模板的话,应该是你的dot模板被修改了,找到normaldot文件删除掉应该就可以了。或者尝试进入C:UsersSolomanAppDataRoamingMicrosoftWordSTARTUP这个文件夹中,删掉里边的文件即可。再来重新运行word应用程序查看是否有异常。

二、如果你在出现这种情况是由于你从前安装的工具箱某种原因被修改,导致工具(宏)无法运行,而产生这个提示。这种情况建议你删除工具箱,或者重新安装你的office版本。

三、因为word2007版本跟word2003版本程序有很大的不同,所以可能你运行了word2007会出现宏提示:“子过程或函数未定义”窗口的现象。所以我们可以尝试下载一个office2003或者word2003应用程序使用。下载运行程序对其进行“工具”----宏--安全性”

控件名称使用了”( )“这个数组或者函数用的符号,程序编译时会理解为一个数组或者函数,如果代码没有定义这个数组名或者函数名,则报错;如果刚好定义了这个名称,则会得出错误的结果,很难在运行中发现。

一般情况下,窗体控件的名称应尽量简化,或者有一定规则避免出错。系统关键字、符号不要用在自定义名称里。

你的 VBA 代码中有多处使用了全角的 “。”,而不是半角的 ""。注意修改一下!估计绝大部分部门就解决了!

少部分问题应该是由于“。”引起的属性名称拼写错误!比如:

°Valuer = Worksheets(表名)Range(系列Y(I))

Excel中vba提示下标超界,说明对象不存在或者数组元素不存在。

举个简单的例子:工作表中没有"1月"这个工作表,却用Sheets("1月");数组定义的是arr(1 to 10),却用Arr(11),都会出现下标越界的提示。

简单的理解:下标越界就是引用超出了所在的范围。

1、当我们在excel的VBA中输入下面代码,运行,就会出现“运行时错误9下标越界”的提示。代码如下:

Sub a()

Dim arr() As String

arr(1) = "你好"

End Sub

2、其实上面的“运行时错误9下标越界”是因为定义的动态数组没有确定维数和尺寸。定义成固定维数和尺寸的,或用Redim界定一下维数和尺寸即可解决此问题。

改正后的代码如下:

Sub a()

Dim arr() '定义一个动态数组

Dim i As Integer

ReDim arr(1 To 3) '定义一个3个元素的数组,并且对数组进行初始化

arr(1) = 3

arr(2) = 4

arr(3) = 5'在下面语句重新定义一个10个元素的数组,清除前面的元素,并重新分配新的存储变量

ReDim arr(1 To 10)

For i = 1 To 10

arr(i) = i

Next i

End Sub,就可以了

扩展资料:

VB中的数组越界

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

下标可能比下标范围大或小,或是在应用程序中这一边的数组没有指定范围。检查数组的声明以确认其上界和下界。若使用的是重新指定范围的数组,应使用 UBound 和 LBound 函数来决定数组访问。如果索引指定为变量,应检查变量名的拼写。

声明数组时没有指定元素的数目。例如,下列的代码就会导致此错误:

Dim MyArray() As Integer

MyArray(8) = 234 ' 导致错误 9。

Visual Basic 并不会将没有指定范围的数组自动设为 0 – 10。相反必须使用 Dim 或 ReDim 来指定数组中元素的数目。

引用了不存在的集合成员。

试着使用 For EachNext 结构代替指定元素下标。

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

-下标越界

Function mcqc(rng As Range)

    Set d = CreateObject("ScriptingDictionary")

    For Each a In rng

       d(aValue) = ""

    Next

    mcqc = Join(dkeys, ";")

End Function

=MCQC(区域)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12177299.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存