Excel VBA:重新启动循环计数器
嗨,我想重新启动我的循环计数器(iColumn)。 我循环遍历列来replace模板(TemplateSheet)中的多个单词。 循环遍历所有列(循环内)后是否可以重新启动循环计数器?
我唯一的问题是增加行值后,它回到循环(列),然后iColumn的值变为4,并终止内部循环。
While Sheets("DataSheet").Cells(iRow, 1).Value <> "" While Sheets("DataSheet").Cells(1, iColumn) <> "" sFind = Sheets("DataSheet").Cells(1, iColumn) sReplacement = Sheets("DataSheet").Cells(iRow, iColumn) sTemplate = Replace(sTemplate, sFind, sReplacement) iColumn = iColumn + 1 Wend Sheets("OutputSheet").Cells(iRow, 1) = sTemplate iRow = iRow + 1 Wend
问题在重新启动循环计数器被解决了。 但现在我不得不覆盖replace函数,因为它不存储新的replace数据。
只需将iColumn
的值重置为您的初始值即可。 我假设1
。
While Sheets("DataSheet").Cells(iRow, 1).Value <> "" While Sheets("DataSheet").Cells(1, iColumn) <> "" sFind = Sheets("DataSheet").Cells(1, iColumn) sReplacement = Sheets("DataSheet").Cells(iRow, iColumn) sTemplate = Replace(sTemplate, sFind, sReplacement) iColumn = iColumn + 1 Wend MsgBox sTemplate iRow = iRow + 1 iColumn = 1 Wend
你可以简化你的代码有点像这样:
While Sheets("DataSheet").Cells(iRow, 1).Value <> "" While Sheets("DataSheet").Cells(1, iColumn) <> "" sTemplate = Replace(sTemplate, Sheets("DataSheet").Cells(1, iColumn), Sheets("DataSheet").Cells(iRow, iColumn)) iColumn = iColumn + 1 Wend MsgBox sTemplate iRow = iRow + 1 iColumn = 1 Wend
最后,请注意,您的MsgBox
调用的位置将只获取sTemplate
的最终值,而不是任何中间值。 当然,这可能是你所追求的。
如果sTemplate在单元格中具有所需的值,则需要将单元格设置为该数据,如下所示:
Sheets("DataSheet").Cells(iRow, iColumn) = sTemplate
这是整个循环:
While Sheets("DataSheet").Cells(iRow, 1).Value <> "" While Sheets("DataSheet").Cells(1, iColumn) <> "" sFind = Sheets("DataSheet").Cells(1, iColumn) sReplacement = Sheets("DataSheet").Cells(iRow, iColumn) sTemplate = Sheets("TemplateSheet").Cells(1, 1) Sheets("OutputSheet").Cells(iRow, iColumn) = Replace(sReplacement, sTemplate, sFind) iColumn = iColumn + 1 Wend MsgBox sTemplate iRow = iRow + 1 iColumn = 1 Wend