VBA代码双条件判断报错:需判断单元格长度与同行UPC空值
问题分析与解决
你的报错原因是把UPC定义成了E列的整个区域,直接调用UPC.Value会返回一个单元格数组,无法直接和空字符串做比较。正确的做法是针对每个循环的C列单元格,获取同一行的E列单元格值来判断。
修正后的代码
'Moving Group Codes Dim cell As Range Dim LastRow As Long '先获取最后一行行号(如果之前没定义的话) LastRow = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row For Each cell In Intersect(Range("C2:C" & LastRow), ActiveSheet.UsedRange) '同时判断两个条件:C列单元格长度为3,且同行E列单元格为空 If Len(cell.Value) = 3 And cell.Offset(0, 2).Value = "" Then cell.Cut Destination:=cell.Offset(columnOffset:=-1) End If Next cell
关键修改说明
- 移除了多余的
UPC区域定义,改用cell.Offset(0, 2)定位到同行E列单元格(C列到E列相差2列,行偏移为0)。 - 将两个判断条件用
And合并到同一个If语句中,逻辑更清晰。 - 循环范围限定为
C2:C&LastRow,避免处理表头行(如果C1是表头的话)。
内容的提问来源于stack exchange,提问作者Julie
相关产品推荐
相关产品推荐

