VBA中如何用FOR-IF语句检查单元格范围并修改对应单元格值?
VBA代码修正:检查指定单元格范围并修改同行值
你的代码核心问题是Cells引用行号时错误地给变量r加了双引号,Cells("r", 14)会被识别为字符串"r",而非循环变量r的数值,导致无法正确遍历目标行。
修正后的基础版本
'place rate type into callforward Dim r As Integer For r = 17 To 600 ' 移除行参数的双引号,直接使用变量r If Cells(r, 14).Value <> "" Or Cells(r, 15).Value <> "" Or Cells(r, 16).Value <> "" Or Cells(r, 17).Value <> "" Or Cells(r, 18).Value <> "" Then Cells(r, 9).Value = "WKD" End If Next r
更简洁的优化版本
可以用CountA函数直接统计指定范围的非空单元格数量,避免重复写多个Or判断,代码更易维护:
'place rate type into callforward Dim r As Integer For r = 17 To 600 ' 统计第r行14-18列的非空单元格数量,大于0则说明存在值 If Application.WorksheetFunction.CountA(Range(Cells(r, 14), Cells(r, 18))) > 0 Then Cells(r, 9).Value = "WKD" End If Next r
内容的提问来源于stack exchange,提问作者MAX Jebson
相关产品推荐
相关产品推荐

