vba - Excel VBA : Restart Loop Counter

标签 vba excel loops

嗨,我正在尝试重新启动我的循环计数器(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/

相关文章:

vba - 函数总是返回 False。为什么?

excel - VBA - 尝试了解如何调用类模块

json - 在 Excel VBA 中解析 JSON

php - 如何在没有内存耗尽的情况下导出具有数字格式的 100K 记录的 HTML 表格

javascript - 单击下拉列表中的子 DIV

excel - 考虑条件生成随机时间

excel - 将公式复制到整个列表

c++ - 为什么循环不中断?

swift - 在 Swift 中循环播放 A 到 B 的动画

python - 有没有办法从python中另一个数字上方的列表中的每个数字中减去一个数字?