VBA的Long类型变量在Do While循环中不断重置无法正常递增怎么办
问题原因
代码存在变量名拼写错误:
你在循环内写的赋值语句是 lgnCol = lngCol + 1,而你全局定义、用来做偏移计算的变量是 lngCol,两个变量名里的g和n顺序写反了。
VBA默认不强制变量声明,你写错的lgnCol会被自动识别为新的临时变量,而真正用来取值的lngCol从来没有被更新,永远停留在初始值0,所以每次执行加1操作都是0+1=1,而且赋值给了完全没用的另一个变量,自然不会出现预期的递增效果。
修复方案
- 直接修正循环内的变量名拼写即可,调整后的代码如下:
lngCol = 0 search_start = "D1" Do While current_week <> week_one lngCol = lngCol + 1 current_week = Range(search_start).Offset(0, lngCol) Loop wk_one_col = current_week.Address Debug.Print wk_one_col
- 额外优化建议:在所有VBA模块的第一行加上
Option Explicit语句,强制要求所有变量必须先声明才能使用,后续如果再出现变量名拼写错误,VBA会直接弹出「变量未定义」的报错,能快速定位这类低级失误,大幅降低调试成本。
内容的提问来源于stack exchange,提问作者TomCrow
相关产品推荐
相关产品推荐

