嗨,我正在尝试重新启动我的循环计数器(iColumn)。我正在循环遍历列以替换模板(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
问题已通过重新启动循环计数器得到解决。但现在我必须覆盖替换函数,因为它不存储新的替换数据。
最佳答案
只需将 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
的最终值,而不是任何中间值。当然,这可能就是您所追求的。
关于vba - Excel VBA : Restart Loop Counter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30805533/