Excel:循环使用while循环的问题

ExcelmacrosVBA我在Excel文件中有两张数据。 我想遍历所有的列和所有的行来检查单元格是否为空。

我试图从“TemplateSheet”replace一个单词。
“DataSheet”包含replace的单词。

但是,好像我的while循环不能在循环遍历列。 你能帮忙吗?

While Sheets("DataSheet").Cells(1, iColumn) <> "" While Sheets("DataSheet").Cells(iRow, 1) <> "" Dim sReplace As String sReplace = Sheets("DataSheet").Cells(iRow, 1) sTemplate = Sheets("TemplateSheet").Cells(1, 1) sFind = Sheets("DataSheet").Cells(1, iColumn) sTemplate = Replace(sTemplate, sFind, sReplace) MsgBox sTemplate iRow = iRow + 1 Wend iColumn = iColumn + 1 Wend 

谢谢您的帮助。

如果你真的想去,直到它变成空白,有一个CurrentRegion属性,将做到这一点。

 Sub ReplaceCells() Dim rCell As Range Dim shTemplate As Worksheet Dim shData As Worksheet Dim sReplace As String, sTemplate As String, sFind As String Set shTemplate = Sheets("TemplateSheet") Set shData = Sheets("DatatSheet") For Each rCell In shData.Range("A1").CurrentRegion.Cells If Len(rCell.Value) > 0 Then sReplace = shData.Cells(rCell.Row, 1) sTemplate = shTemplate.Cells(1, 1) sFind = shData.Cells(1, rCell.Column) sTemplate = Replace(sTemplate, sFind, sReplace) MsgBox sTemplate End If Next rCell End Sub 

所以你循环你的列,然后循环你的行。 但是,当您到达下一列时,您的行不会回到1。 它是否解决您的问题,以便在行循环之前添加iRow = 1

 While Sheets("DataSheet").Cells(1, iColumn) <> "" iRow = 1 While Sheets("DataSheet").Cells(iRow, 1) <> "" Dim sReplace As String sReplace = Sheets("DataSheet").Cells(iRow, 1) sTemplate = Sheets("TemplateSheet").Cells(1, 1) sFind = Sheets("DataSheet").Cells(1, iColumn) sTemplate = Replace(sTemplate, sFind, sReplace) MsgBox sTemplate iRow = iRow + 1 Wend iColumn = iColumn + 1 Wend