[英]Excel: Problems in Looping Through Columns Using While Loop
Excel宏VBA我在excel文件中有兩張數據。 我想遍歷所有列和所有行以檢查單元格是否為空。
我正在嘗試替換“ TemplateSheet”中的一個詞。
“ DataSheet”包含要替換的詞。
但似乎我的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.