VBA判断单元格内容以字母R开头运行时报错如何解决
VBA代码错误修正方案
错误原因排查
- 最直接触发当前行报错的原因是括号语法错误:
If Left(Cells(J, I).Value, 1)) = "R" Then这行多了1个多余的右括号,Left()函数结束后多写了),直接触发语法报错。 - 列索引越界:Excel工作表的列索引最小值为1,代码中循环变量
I从0开始遍历,访问Cells(J, 0)时会触发索引不存在的错误。 - 变量类型不合理:行号、列号都是正整数,不需要用Double浮点类型,应该用Long整型,避免不必要的类型转换问题。
- 边界场景缺失:未判断单元格为空的场景,若单元格内容为空时调用
Left()函数也可能触发运行时错误,建议增加非空判断。
修正后的完整代码
Sub fgrt() Dim LastRow As Long LastRow = Cells(Rows.Count, 1).End(xlUp).Row Dim lColumn As Long lColumn = Cells(2, Columns.Count).End(xlToLeft).Column ' 行列索引改用Long整型 Dim J As Long Dim I As Long ' 列索引从1开始,避免越界 For I = 1 To lColumn For J = 3 To LastRow ' 先判断单元格非空,再取首字符判断,去掉多余右括号 If Not IsEmpty(Cells(J, I).Value) Then If Left(Cells(J, I).Value, 1) = "R" Then Cells(J, I).Value = Cells(J, 169).Value End If End If Next J Next I End Sub
内容的提问来源于stack exchange,提问作者François Maurice
相关产品推荐
相关产品推荐

