嗨,我正在尝试重新启动循环计数器(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
重启循环计数器时问题解决了。但现在我必须覆盖替换功能,因为它不会存储新替换的数据。
答案 0 :(得分:2)
只需将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
的最终值,而不是任何中间值。当然,这可能就是你所追求的目标。
答案 1 :(得分:1)
如果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