簡體   English   中英

在Vba中遍歷列並使用“ Do while”循環設置范圍

[英]Going through columns and setting a range with “Do while” loop in Vba

我有一個時間序列的數據范圍,其中日期在A列,價格在B列。

此數據的前200行具有“ N / A”(字符串,不是錯誤)(此數字不准確,每次運行文件時都會更改,因此無法直接引用它)。

為了能夠從不具有“ N / A”的范圍內繪制圖形,我使用“ Do While”循環遍歷行,直到不等於“ N / A”,然后設置范圍。

問題:由於某種原因,我的“ i”計數器未求和。 循環從i = 1開始,然后以i =最后一個“ N / A”的行號開始。

該代碼的相關部分是:

i = 1
If SourceWorksheet = "Ret" Or SourceWorksheet = "Vol" Then

    Do While w.Sheets(SourceWorksheet).Cells(i, 2) = "N/A"

        i = i + 1     '****Problem IS HERE, IT IS NOT SUMMING TO i

    Loop

    Set RetRange = w.Sheets(SourceWorksheet).Range(Cells(i + 1, 1), Cells(xlLastCell))

Else

    Set RetRange = w.Sheets(SourceWorksheet).UsedRange

End If

Obs 1:在這種情況下,我將i設置為1,但是我已經嘗試過不為其分配值,但是出現錯誤。

意見2:由於此函數從子程序接收參數,因此SourceWorksheet是用戶將輸入的參數。

關於此代碼有什么問題的任何想法?

除了我們已經解決的許多其他問題之外,如果單元格B1不包含“ N / A”(例如,由於標題),則循環將失敗。

嘗試以下修改的代碼:

With w.Sheets(SourceWorksheet)
    If SourceWorksheet = "Ret" Or SourceWorksheet = "Vol" Then
        i = 2 ' or i=3, whatever row contains your first item of data
        Do While .Cells(i, 2).Value = "N/A"
            i = i + 1
        Loop

        Set RetRange = .Range(.Cells(i, 1), .Cells.SpecialCells(xlCellTypeLastCell))

    Else

        Set RetRange = .UsedRange

    End If
End With

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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