2 차원 배열에 일부 데이터가 있고 Excel 차트를 사용하여 차트를 만들어야합니다. 그러나 차트 setsourcedata는 범위 만 허용하는 것으로 보입니다. 즉, 스프레드 시트의 범위에 배열을 저장 한 다음 범위를 차트에 입력으로 전달해야합니다. 그래서 특정 범위에 데이터를 저장하는 임시 시트를 만든 다음 차트 생성 호출에 전달할 계획입니다. 내가 만든 유형은 다음과 같습니다.
Private Type CItem
CName As Variant
CWeek(13) As Variant
CDisabled(13) As Variant
CEmpty(13) As Variant
CEnabled(13) As Variant
End Type
Dim CItemArray(100) As CItem
cnt1 = 0
//.. do something
ActiveWorkbook.Sheets.Add(After:=Sheets("MainSheet")).Name = "WK_Report"
Worksheets("WK_Report").Range("C3:C15").value = CItemArray(cnt1).CWeek()
Worksheets("WK_Report").Range("D3:D15").value = CItemArray(cnt1).CDisabled()
Worksheets("WK_Report").Range("E3:E15").value = CItemArray(cnt1).CEnabled()
Worksheets("WK_Report").Range("F3:F15").value = CItemArray(cnt1).CEmpty()
내 목표는 첫 번째 CItem에 대한 전체 CWeek 배열을 각각 C3 : C15 범위에 할당하는 것입니다. 그러나 위에서 사용한 구문은 Cweek, CDisabled, CEnabled, CEmpty의 첫 번째 요소를 전체 범위에 할당합니다. CWeek 등 뒤에 괄호없이 시도했지만 결과는 같습니다.
범위에 배열 값을 할당하려면 어떻게해야합니까? 확인을 위해 할당 한 후 debug.print를 수행했기 때문에 값이 배열에 있음을 알고 있습니다.
사용자 정의 유형 배열을 채우는 방법을 생략했지만 2D 변형 배열로 이동해야합니다.
Private Type CItem
CName As Variant
CStuff(1 to 13, 1 to 4) As Variant
End Type
Dim CItemArray(100) As CItem, cnt1 as long
//.. populate 100 CItemArray.CStuff with 13 rows by 4 columns each
ActiveWorkbook.Sheets.Add(After:=Sheets("MainSheet")).Name = "WK_Report"
cnt1 = 1
with Worksheets("WK_Report").Range("C3")
.resize(ubound(CItemArray(cnt1).CStuff, 1), ubound(CItemArray(cnt1).CStuff, 2)) = CItemArray(cnt1).CStuff
end with
내 관점에서 사용자 정의 유형은 방해가되지만 일단 작동하면 '설정하고 잊어 버리는'유형 일 수 있습니다. 1 기반 배열을 사용 했으므로 ubounds에 1을 추가 할 필요가 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다