[英]Errors using Find Method and Match Function in Excel VBA Macro
我正在編寫一個宏,以為大量數據創建大量散點圖。 每個圖表的數據集位於其自己的選項卡上。 自變量始終在列J中,但是因變量的位置可以更改。 我將因變量的名稱放在單元格K1中,以告訴宏該列是此圖表的因變量。 我需要對在標題行中查找變量名稱的邏輯進行編程,以便可以設置Chart.SeriesCollection.NewSeries.Values
的范圍。
這是我的數據集的樣子(由於專有信息,我無法顯示真實的東西):
我嘗試了find方法,但返回了一個錯誤,指示它找不到所需的內容:
For Each ws in ThisWorkbook.Sheets
Set oChart = ws.ChartObjects.Add (Left:=0, Width:=375, Top:=0, Height:=225)
Set rXVal = ws.Range("J3")
Set rXVal = Range(rXVal, rXVal.End(xlDown))
sLookup = ws.Range("K1").Value
Set rHeader = Range(ws.Range("J2"), ws.Range("J2").End(xlToRight))
Set rCell = rHeader.Find(What:=sLookup, LookIn:=xlValues, LookAt:=xlPart, After:=Cells(1, 1), SearchOrder:=xlByColumns)
Set rYVal = Range(rCell.Offset(1, 0), rCell.Offset(1, 0).End(xlDown))
With oChart.Chart.SeriesCollection.NewSeries
.XValues = rXVal
.Values = rYVal
End With
Next
然后,我嘗試了Match,但是仍然出現錯誤,表明它找不到查找值:
For Each ws in ThisWorkbook.Sheets
Set oChart = ws.ChartObjects.Add (Left:=0, Width:=375, Top:=0, Height:=225)
Set rXVal = ws.Range("J3")
Set rXVal = Range(rXVal, rXVal.End(xlDown))
sLookup = ws.Range("K1").Value
Set rHeader = Range(ws.Range("A2"), ws.Range("A2").End(xlToRight))
iCol = Application.WorksheetFunction.Match(sLookup, rHeader, 0)
Set rYVal = ws.Cells(3, iCol)
Set rYVal = Range(rYVal, rYVal.End(xlDown))
With oChart.Chart.SeriesCollection.NewSeries
.XValues = rXVal
.Values = rYVal
End With
Next
我嘗試將sLookup
更改為CLng(sLookup)
並省略了WorksheetFunction
部分,但是仍然出現錯誤,表明它找不到我想要的東西。
我認為您的主要問題是分配給rHeader
的錯誤。 嘗試
Set rHeader = ws.Range(ws.Cells(2, 10), ws.Cells(2, ws.Columns.Count).End(xlToLeft))
然后,在第一個變體中,擺脫After:=Cells(1, 1)
最后,通過檢查結果來檢查Find-Command是否返回了任何內容:
if rCell is nothing then
Debug.print "Not found..."
else
...
end if
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.