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