본문 바로가기
주문제작의뢰

[의뢰] 차트생성

by 일등미노왕국 2023. 8. 6.

어느 경영학도의 의뢰이다.

고등학교 이후에 오랜만의 행렬을 공부하였다.

 

이 의뢰의 핵심은 행렬이 늘어나면서  Table 을 크기가 변화하기에 그걸을 능동적으로 잡을 필요가 있었다.

그 이후에는 테이블을 통해서 차트를 생성해야 하고

그 차트가 유저폼에도 나와야 하는 의뢰이다.

 

1 능동적인 테이블을 잡기위해서는 행의 숨김과 보이기를 반복하는 코드를 사용하였고

2. 차트를 그리기 위해서 데이터의 값을 입력한 후 그 결과값을 계속적으로 가져와서 차트를 그리기 위한 테이블을 만드는 자료를 구성하였다.

다음은 차트 생성을 위한 코드이다.

더보기
Sub Chart()

    Dim rngChart As Range
    Dim rngData As Range
    Dim strPath As String                        '폴더의 경로를 넣을 변수
    Dim strFile As String                         '임시 그림파일 경로 + 이름 넣을 변수
    Dim cht As Chart
    Dim shp As Shape
    
    
    For Each shp In ActiveSheet.Shapes '=  차트 초기화 / 기존 차트 모두 삭제
    
        If shp.Type = msoChart Then shp.Delete
        
    Next shp
    
    Set rngChart = [j4].MergeArea      '= 차트 출력위치

   '= 차트 데이터 영역
    Set rngData = Union(Range([e4], Cells(Rows.Count, "f").End(3)), Range([h4], [h4].End(4)))
  
    ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select  '=선형 분포도 삽입
    
    Set cht = ActiveChart                               '= 현재 선택된 차트 선언
    
    With cht
         .SetSourceData Source:=rngData                 '= 차트데이터
         .chartTitle.Text = "MEAN-VAR EFFICIENT"        '= 차트제목
         .HasLegend = True                              '= 범례를 표시하겠다.
         .Legend.Position = xlLegendPositionBottom      '= 범례위치는 아래로
         .SeriesCollection(1).Name = "Return"           '= 각 범례의 이름
         .SeriesCollection(2).Name = "Capital Allocation Line Ret"
         
        
         .Axes(xlCategory).TickLabels.NumberFormatLocal = "0.0"   '= X축 서식
         .Axes(xlValue).TickLabels.NumberFormatLocal = "0.0"      '= Y축 서식
         
          strPath = ActiveWorkbook.Path & "\"  '이 엑셀파일이 저장된 폴더의 경로
          strFile = "chart.gif"              '경로 + 파일이름 + 시트이름 + .gif로 저장
         
         If Dir(strPath & strFile) <> "" Then Kill strPath & strFile
         
         .Export strPath & strFile, filtername:="GIF"
    
         With .Parent                                   '= 차트 위치
            .Left = rngChart.Left
            .Top = rngChart.Top
            .Width = rngChart.Width
            .Height = rngChart.Height
         
         End With
         
    End With
    
    [m23].Select
    
    Export_file

End Sub

 

3. 마지막으로는 유저폼에 차트를 가져와야 하는데,

유저폼에 사진을 가져오는 코드는 예전에 본인이 포스팅한 글을 한번 살펴보길 바란다.

https://1stminokingdom.tistory.com/79

 

[VBA] 셀에 사진을 넣어보자(feat. BTS)

사진을 셀에 넣는 코드들은 많다. 사진을 고정된 셀에 넣는 코드들 역시 많다. 오늘 하려고 하는 코드는 유저폼으로 사진을 불러오고, 사진을 확인한 후 셀에 넣는 코드이다. 셀의 너비는 일정

1stminokingdom.tistory.com

 

내일은 개발자인 당신의 꿈을 응원한다.

댓글