활성 통합 문서에 시트를 추가하기 위해 개인 서브 루틴을 구현하려고합니다. 시트를 사용하여 xlForms를 추가하도록 선택할 수 있습니다 , xlWorksheet 등).Excel 2007 VBA - Sheets.Add를 사용하여 통합 문서 끝에 차트 만들기
하지만 통합 문서의 다른 시트와 관련하여 새 차트가 생성되는 위치에 기괴한 문제가 있습니다.
ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.count()), _
Type:=sheet_type).Name = sheet_name
sheet_type
이 열거
XlSheetType
의 선택적 매개 변수입니다
및 sheet_name
가 string
입니다 :
같은 xlWorksheet
, xlDialogSheet
, 심지어 xl4MacroSheet
로 -하지만 통합 문서의 그것에게 마지막 시트를 만드는 반대로, 끝나기 전에 xlChart
1 위를 만들 몇 가지 이유 .
> Create_Sheet "Test", sheet_type:=xlWorksheet
Sheet 1 | Sheet 2 | Sheet 3 | Test
> Create_Sheet "Test", sheet_type:=xlDialogSheet
Sheet 1 | Sheet 2 | Sheet 3 | Test
> Create_Sheet "Test", sheet_type:=xlChart
Sheet 1 | Sheet 2 | Test | Sheet 3
Sheets.count()
제대로 (I은 시트 1, 2로 시작하기 때문에, 3) 위의 예에서 3을 반환 등 :
그래서 I/O는 (단 3 장으로 떨어져 시작) 샘플 그것은 3 번째 시트 다음에 그것을 가정해야하지만, 그렇지 않습니다. 테스트를 위해 Sheets.count() + 1
을 시도하면 (예상되는) 배열 첨자가 범위를 벗어나는 런타임 예외 만 제공합니다.
는 난 단지 기본 코드 테스트 한 :
ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.count()), _
Type:=xlChart).Name = "Test"
을하고 난 여전히 같은 결과를 얻는 바람.
기본적으로 내 질문은 여기에 있습니다. 나는 여기서 뭔가 잘못하고있는 것입니까? 차트를 통합 문서 끝에 추가 할 수없는 이유는 무엇입니까? 아니면이 문제가 아마도 VB에서 수정해야 할 버그입니까?
나는 Office 2007을 사용하고 있습니다. 그렇지 않으면 최신 버전에서 수정 된 오류입니까?
모든 입력이 도움이됩니다.
편집 : 그것은하지만이 훨씬 더 재미있다 Type:=xlChart
편집 2 하는 경우, After:=Sheets(Sheets.count())
이 After:=Sheets(Sheets.count() - 1)
과 같은 위치를 생산하고 있음을 주목할 필요가있다. 당신은 하나 개의 차트를 작성하는 경우, 통합 문서의 마지막 시트로 배치하고 다음 코드를 사용 : 워크 시트가 마지막이되도록 Excel에서 자동으로 차트를 다시 방향을합니다
ActiveWorkbook.Charts.Add After:=Charts(1)
합니다.예를 들어
에게, 당신이있는 경우 :
Sheet 1 | Sheet 2 | Sheet 3 | Chart 1
및 코드를 사용, 당신은 내가이 당신을 도울 것입니다 확실하지 오전
Sheet 1 | Sheet 2 | Chart 1 | Chart 2 | Sheet 3
이것은 재미 있습니다, 나는 그것을 테스트합니다 내 Excel 2010과 나는 같은 반응을 얻고 있습니다. 'Before '가 효과가있는 것처럼 보인다. 또한 'After'를두면 마지막 시트를 제외한 모든 시트가 작동합니다. 나는 시험을 계속하고 내가 무엇을 찾을지를 볼 것입니다. – L42
글쎄요, 그것은 나뿐이 아니기 때문에 기뻐요.하지만 실제로 해결책이 있기를 바랍니다. xlChart 일 때만이 문제가 발생한다는 것이 기괴한 것 같습니다. – Bitwize
여기를 참고하십시오 : http://books.google.com/books?id=wlLQlMuSwAcC&pg=PA85&lpg=PA85&dq=vba+add+chart+at+end+of+workbook&source=bl&ots=EmmLbQJoju&sig=DavNAdtOdgvpMSbsi21I0zzWQ0w&hl=en&sa=X&ei=J5n5UvSGONGiqwGilIGIDw&ved= 0CC8Q6AEwBDgK # v = onepage & q = vba % 20add % 20chart % 20at % 20end % 20of % 20workwork & f = false. 알려진 문제로 보입니다. 거기에 제안 된 해결책이 있습니다. –