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

如何让VBA For循环中的字符串内容正确显示在消息框中

VBA循环无法读取st1/st2这类变量内容的解决方法

问题原因

你代码中的stat = st & Counter写法不符合VBA语法规则:VBA不支持直接通过拼接字符串的方式引用提前声明的st1/st2这类普通变量。此时未声明赋值的st被识别为空白变体变量,拼接后只会得到"1"/"2"这类纯数字字符串,因此不会输出你想要的文本内容。

推荐解决方案

改用数组存储多段文本,通过下标索引读取对应内容,是最高效且易维护的实现方式,修正后的完整代码如下:

Sub OutputTxt()
    ' 定义数组存储文本内容
    Dim stArr(1 To 8) As String
    Dim Counter As Long
    Dim TotalCount As Long
    
    ' 给数组赋值
    stArr(1) = "Test A"
    stArr(2) = "Test B"
    stArr(3) = "Test C"
    stArr(4) = "Test D"
    stArr(5) = "Test E"
    stArr(6) = "Test F"
    stArr(7) = "Test G"
    stArr(8) = "Test H"
    
    TotalCount = 8
    For Counter = 1 To TotalCount
        ' 直接用下标读取数组对应位置的内容
        MsgBox ("Txt : " & stArr(Counter))
    Next Counter
End Sub

备选方案(不改动原有变量定义)

如果你不想调整原有st1到st8的变量定义,可以用Choose函数实现动态取值,仅需修改循环内的赋值语句即可:

For Counter = 1 To TotalCount
    stat = Choose(Counter, st1, st2, st3, st4, st5, st6, st7, st8)
    MsgBox ("Txt : " & stat)               
Next Counter

小提示:建议你在所有VBA模块的第一行添加Option Explicit语句,强制要求所有变量必须先声明才能使用,运行代码时会直接提示变量未定义的错误,能快速定位这类语法问题。

内容的提问来源于stack exchange,提问作者DAZZWEERA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:06:07