作者:乔山办公网日期:
返回目录:excel表格制作
一、实现功能要求:求总分。
1、在Excel界面中,初始数据如下
2/7
2、进入VBE界面中,编写如下代码:
Sub OnErrorResume()
Dim i%
For i = 2 To 6:
Sheet4.Range("d" & i) = Sheet4.Range("b" & i) + Sheet4.Range("c" & i)
Next
End Sub
3、运行代码,则报一下错误;错误原因为:包含字符串类型;
3/7
接下来,将对此错误进行处理;
4、修改代码为:
Sub OnErrorResume()
Dim i%
On Error Resume Next '错误时则恢复;
For i = 2 To 6:
Sheet4.Range("d" & i) = Sheet4.Range("b" & i) + Sheet4.Range("c" & i)
Next
End Sub
4/7
5、点击插入--形状,选择一个形状;
6、选择形状,右键指定宏,选择刚刚定义的宏OnErrorResume;
5/7
7、运行宏;则在有字符串的行中,将不执行,继续执行后面的语句;
6/7
8、当出现某个错e799bee5baa6e997aee7ad94e58685e5aeb9333误时,直接输出错误位置;
Sub onErrorGoTo88()
Dim i%
On Error GoTo 100 '出现错误时,执行某段语句;
For i = 2 To 6:
Sheet1.Range("d" & i) = Sheet1.Range("b" & i) + Sheet1.Range("c" & i)
Nexti
Exit Sub
100:
MsgBox ("´íÎó³öÏÖÔÚ" & i & "ÐÐ")
Return
End Sub
7/7
综上所述,本文提供两种方法:
1、On Error Resume Next:忽略错误;
2、On Error GoTo line:错误时跳转到其他执行语句;
来对错误语句进行处理。
你注意下,当最后一次循环时,j是不是已经超界了,我猜想出错时,cells(j,2)的格子里的空的,而你并不想对这个空值进行加总
if语句度的括号不匹配
if len(cells(x,5))<>len(application.WorksheetFunction.Substitute(cells(x,5)," ","")) then ...
另外,前面几位都问没说错,你的代码还是用的工作表答函数,不如直接在工作表中输入公式回:
=IF(LEN(E1)<>LEN(SUBSTITUTE(E1, " ", "")), "YES", "NO")
VBA检测是否包含空答格,可以用INSTR函数:
if instr(cells(x,5), " ")>0 then ...