VBA循环问题求助:遍历水果列批量填充编码时循环提前终止
VBA循环终止问题解决
问题分析
你当前的代码本身不会触发循环提前终止,大概率是以下原因导致的问题:
nrows计算逻辑错误:你用第1列的最后行来确定总行数,但如果水果数据所在的第2列行数比第1列多,就会漏处理后续行- 大小写匹配问题:
Like运算符区分大小写,若单元格内容是Apple或APPLE,则无法匹配"apple" - 代码可能被未贴出的逻辑打断(比如
Exit For语句或错误处理)
修正后的代码
Sub AddFruitCodes() Dim inmd As Integer, nrows As Integer ' 基于水果所在的第2列计算总行数,避免数据列行数不一致的问题 nrows = Worksheets("Sheet1").Cells(Rows.Count, 2).End(xlUp).Row ' 无需激活工作表,直接引用更高效 For inmd = 2 To nrows Select Case LCase(Worksheets("Sheet1").Cells(inmd, 2).Value) Case "apple" Worksheets("Sheet1").Cells(inmd, 3).Value = "AMF" Case "orange" Worksheets("Sheet1").Cells(inmd, 3).Value = "OMG" ' 可继续添加更多水果与编码的对应规则 Case "banana" Worksheets("Sheet1").Cells(inmd, 3).Value = "BNN" End Select Next inmd End Sub
关键优化点
- 用
LCase()统一转换为小写,彻底解决大小写不匹配问题 - 改用
Select Case结构,方便后续扩展更多水果编码规则 - 基于数据所在列计算总行数,确保不会漏处理任何行
- 移除不必要的
Activate操作,提升代码运行效率
内容的提问来源于stack exchange,提问作者Chinmay Bhate
相关产品推荐
相关产品推荐

