이것은 Excel의 액티브 시트에 배치 된 차트에 대한 간단한 해결책입니다. 코드의 주석에 설명 된 몇 가지 가정과 팁이 있습니다.
Sub GetSourceCellsAddress()
'define chart first...
Dim CH As Chart
Set CH = ActiveSheet.ChartObjects(1).Chart
'...and its first series (which is line type)
Dim SC As Series
Set SC = CH.SeriesCollection(1)
'what we need is a series formula where you find reference to the range
Dim strFormula As String
strFormula = SC.Formula
'test here:
Debug.Print strFormula 'result: =SERIES(Sheet1!$D$3,,Sheet1!$D$4:$D$8,1)
'but in fact we need the range with cell values, retrieve it from the formula
Dim strRangeFromFormula As String
strRangeFromFormula = Mid(strFormula, _
InStrRev(strFormula, "!") + 1, _
InStrRev(strFormula, ",") - InStrRev(strFormula, "!") - 1)
'test here
Debug.Print strRangeFromFormula 'result: $D$4:$D$8
'in fact our point PT is a range type, so, iterate through cells
Dim rngPT As Range
For Each rngPT In Range(strRangeFromFormula)
Debug.Print rngPT.Address 'results >>$D$4, $D$5, $D$6, $D$7, ....
Next rngPT
End Sub
감사합니다. Kaz! 그것은 마지막 부분 이외의 화려한 작동합니다 '희미한 rngPT 각 rngPT에서 범위 (strRangeFromFormula)에 대한 범위 으로 을 Debug.Print rngPT.Address 다음 rngPT'내가 컴파일 오류 '오류가 발생했습니다 : 사용자 deifned 유형을 정의되지 않음 ' –
정확히 어떤 줄? 앞에서 말했듯이 이것은 Excel 용입니다. PowerPoint에서 실행하면 추가 작업이 필요합니다. –
예, PowerPoint에 있습니다 ... –