在 Excel 中,我有一列单词。我相信您在编程世界中将单词称为“字符串”。
逐行,我需要取出列中的每个单词并在其周围放置单个引号。
例如,如果单元格中的单词是狗,我需要将其更改为“狗”。
我正在尝试编写一个宏来执行此操作,但我已经遇到了 vba 的第一部分的问题。代码,就是将words这一列导入到vba中来自 Excel 电子表格。
我的代码如下。错误消息显示“下标超出范围”,但正如您所看到的,我已将数组变暗。我究竟做错了什么?谢谢。
Sub putquotes()
Dim sym(1 To 162) As String
For i = 1 To 162
sym(i) = Worksheets("sheet1").Cells(i + 1, 1)
Next i
End Sub
最佳答案
我认为您的问题是您的 sheet1
名称,它可能应该是 Sheet1
我将使用类似的东西,它将在第一个工作表上运行(请参阅Set ws = Sheets(1)
)
请注意,第三个工作表将是 Set ws = Sheets(3)
,或者如果您确实有这样的内容,您可以使用 Set ws = Sheets("Sheet1")
一张纸
这段代码:
- 将独立于所选工作表运行
- 从 A 列中第一个到最后一个使用的单元格查找(而不是硬编码 162 行)
- 使用变体数组而不是范围来提高速度
添加两个
''
以确保第一个可见:)Sub PutQuotes() Dim ws As Worksheet Dim varList Dim rng1 As Range Dim lngCnt As Long Set ws = Sheets(1) Set rng1 = ws.Range(ws.[a1], ws.Cells(Rows.Count, "A").End(xlUp)) varList = rng1.Value2 For lngCnt = 1 To UBound(varList) If Len(varList(lngCnt, 1)) > 0 Then _ varList(lngCnt, 1) = "''" & varList(lngCnt, 1) & "'" Next 'dump updated array back over range rng1.Value2 = varList End Sub
关于string - 应该是VBA中的简单循环程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9858386/