2013-04-05 6 views
0

차트 그래프를 만드는 기존 VBA 코드 (Excel)를 수정하고보다 유연하게 만들려고합니다.Excel VBA Charts -> 차트 내에서 "셀"을 사용하여 범위 선택

Range("B12:B15").Select  

내 목표는 표현 된 그래프를 가지고 있었다 :

Range(Cells(12, 2), Cells(15, 2)).Select  

이 더 많거나 적은 동일한하는 것입니다

나는 아래의 코드는 기본적으로 같은 일을 알고 유연한 행 수

런타임 오류 '1004 :

ActiveChart.SetSourceData Source:=Sheets("Log-Data").Range("B12:B200"), PlotBy:=xlColumns  

이제

Dim LastRow As Integer 
LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row  
ActiveChart.SetSourceData Source:=Sheets("Log-Data").Range(Cells(12, 2), Cells(LastRow, 2)), PlotBy:=xlColumns  

, 내가 코드를 실행할 때마다, 내가받을

에 :

은 그래서 기존 코드를 변경 ': 응용 프로그램 정의 또는 개체 정의 오류

LastRow 변수가 문제가되지 않습니다. 200으로 바꾸면 같은 결과가 나타납니다.

내가 뭘 잘못하고 있니?

건배

피터

+1

(셀 단어 앞에 마침표를 추가) 작동 'sheetname.Range (Cells (a, b), Cells (a2, b2)) '를 사용할 때마다 항상 각 Cells()를 th e sheet reference : 그렇지 않으면'Cells()'는 항상 당신이 의도 한 것이 아닌 ActiveSheet를 참조 할 것입니다. –

답변

0

LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row

LastRow = ActiveSheet.UsedRange.Rows.Count

은 동일합니다.

실제 오류가 발생하는 한, 코드를 실행할 때 활성 차트 개체가없는 것처럼 보입니다. 따라서 ActiveChart.은 개체 오류를 반환합니다.

이 시도 :

Dim LastRow As Integer 
LastRow = ActiveSheet.UsedRange.Rows.Count 
ActiveSheet.Shapes.AddChart.Select 
ActiveChart.SetSourceData Source:=Sheets("Log-Data").Range(Cells(12, 2), Cells(LastRow, 2)), PlotBy:=xlColumns 
-2

아래 시도하고 나를

Dim LastRow As Integer 
LastRow = ActiveSheet.UsedRange.Rows.Count 

With Sheets("Log-Data") 
Set Myrange = .Range(Cells(12, 2), Cells(LastRow, 2)) 
End With 

ActiveSheet.Shapes.AddChart.Select 
ActiveChart.SetSourceData Source:=Myrange, PlotBy:=xlColumns 
0

내가 시도한 다음을 알려는

Dim LastRow As Integer 
LastRow = ActiveSheet.UsedRange.Rows.Count 

With Sheets("Log-Data") 
Set Myrange = .Range(.Cells(12, 2), .Cells(LastRow, 2)) 
End With 

ActiveSheet.Shapes.AddChart.Select 
ActiveChart.SetSourceData Source:=Myrange, PlotBy:=xlColumns