簡體   English   中英

Excel:使用While循環遍歷列的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM