簡體   English   中英

在Excel VBA宏中使用查找方法和匹配函數時出錯

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

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