如何在VBA字符串中实现数组索引?代码语法问题求助
解决VBA字符串拼接的语法错误
你的代码里有两处明显的语法问题,直接导致字符串部分无法正常解析,下面是问题分析和修正方案:
问题1:字符串变量赋值错误
Set k = "]"" Value=""0""/>" 是错误写法——k是String类型(值类型),不需要用Set关键字,Set仅用于对象类型(比如Range、Workbook)的赋值,直接去掉Set即可。
问题2:字符串拼接运算符的空格缺失
i + 1& 里的&(字符串拼接运算符)和前面的表达式之间没有空格,VBA会错误解析这段代码,必须给&前后加上空格,确保编译器能识别这是拼接操作。
另外补充一个优化点:如果只是要往单元格写入静态文本,用Value属性比FormulaR1C1更合适(FormulaR1C1是专门用于设置单元格公式的属性,虽然写入文本也能生效,但语义不符)。
修正后的完整代码
Sub Macro12() ' ' Macro12 Macro ' Dim i As Integer Dim k As String ' 移除Set,直接给字符串变量赋值 k = "]"" Value=""0""/>" For i = 1 To 64 ' 给&前后加空格,确保语法正确;用Value属性写入文本 Cells(i, 1).Value = "<Element Index=""" & (i + 1) & "]"" Value=""0""/>" Next i End Sub
可选优化:用Chr(34)简化引号逻辑
如果觉得双引号转义("")看着混乱,可以用Chr(34)替代(Chr(34)代表双引号字符),代码可读性会更好:
Sub Macro12() ' ' Macro12 Macro ' Dim i As Integer Dim k As String k = "]" & Chr(34) & " Value=" & Chr(34) & "0" & Chr(34) & "/>" For i = 1 To 64 Cells(i, 1).Value = "<Element Index=" & Chr(34) & (i + 1) & "]" & Chr(34) & " Value=" & Chr(34) & "0" & Chr(34) & "/>" Next i End Sub
内容的提问来源于stack exchange,提问作者Brandon Hill
相关产品推荐
相关产品推荐

