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