You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:06:01