【发布时间】:2015-07-09 03:13:36
【问题描述】:
我正在用 VBA 编写一个非常基本的宏,这是我第一次在其中编写任何东西,所以我很挣扎。我完全知道我需要做什么的逻辑,我只是还没有得到 VBA 的语法。如果该行中的第一个单元格包含特定的子字符串,我想遍历该行中的每个单元格。 在 for 循环中,如果该单元格不为空,我想将该子字符串附加到行中每个单元格的末尾。我没有通过我的 for 循环声明
Sub changeRow()
Dim txt As String
txt = Cells(ActiveCell.Row, 1)
If InStr(1, txt, "123") > 0 Then
For Each b In Range(Rows(ActiveCell.Row).Select)
If Len(b.Value) > 0 Then
b.Value = b.Value & " 123"
End If
Next b
End If
End Sub
【问题讨论】:
-
声明中的
b是什么,应该是Range? -
是的,对于糟糕的变量命名感到抱歉。我假设 b 应该是每次迭代时选择的单元格。
-
如果您在列中有标题,那么您也可以使用
.AutoFilter过滤搜索字符串上的单元格,然后遍历过滤后的范围。那会快得多!想象一下。您的 Excel 列有 50k 条记录。假设只有两个单元格有123。在当前场景中,您的循环将运行 50k 次以检查单元格是否具有123。如果您使用自动过滤器,那么您的循环将只运行 2 次!!!