如何让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
相关产品推荐
相关产品推荐

