본문 바로가기
  • Welcome!
VBA For Creo

Array 공부 - 치수 값을 조합 하여 화면에 표시하기

by ToolBOX01 2023. 8. 15.
반응형

□ 소개

1행 10개, 2행 5개를 조합하여, 곱하는 코드 입니다

▷ 액셀 파일

[ 1행 10개 / 2행 5개 ]

▷ 코드

Sub MultiplyArrays()
    Dim array1(1 To 10) As Double
    Dim array2(1 To 5) As Double
    Dim resultArray(1 To 10, 1 To 5) As Double
    Dim i As Integer, j As Integer
    
    ' 1행 배열 값 할당
    For i = 1 To 10
        array1(i) = Cells(i, "A").Value
    Next i
    
    ' 2행 배열 값 할당
    For i = 1 To 5
        array2(i) = Cells(i, "B").Value
    Next i
    
    ' 결과 배열 계산
    For i = 1 To 10
        For j = 1 To 5
            resultArray(i, j) = array1(i) * array2(j)
        Next j
    Next i
    
    ' 결과 배열 출력
    For i = 1 To 10
        For j = 1 To 5
            Cells(i, j + 5).Value = resultArray(i, j)
        Next j
    Next i
    
End Sub

 

▷ 실행 결과

[ 프로그램 실행 결과 ]

 


□ 소개

ChatGTP를 사용하여 VBA 코드를 생성 하였습니다. Creo 모델의 치수 값을 자동으로 변경 하면서 면적을 구하는 프로그램을 개발 하려 합니다. 배열을 이용하여 조합 할수 있는 치수들을 표합니다.

[변경 가능한 치수 값]

모델의 치수 이름 "DIM01"에 10 ~ 100까지 치수 값을 입력 할수 있습니다 (변경 범위), DIM02"에 40 ~ 50까지 치수 값을 입력 할수 있습니다. 2개의 치수 값을 조합 할수 있는 경우의 수는 "10 * 5 = 50개" 입니다.

▷ 코드 (ChatGTP가 생성하였습니다)

Sub dimCombination()

    Dim dim01range As Range
    Dim dim02range As Range
    Dim dim01Array() As Variant
    Dim dim02Array() As Variant

    Set dim01range = Worksheets("Area").Range("D7", Cells(Rows.Count, "D").End(xlUp))
    Set dim02range = Worksheets("Area").Range("E7", Cells(Rows.Count, "E").End(xlUp))
    dim01Array = dim01range.Value
    dim02Array = dim02range.Value
    
    Dim i As Long, j As Long
    Dim outputRow As Long
    
    outputRow = 1 '// 출력할 행 인덱스 초기화
    
    For i = LBound(dim01Array) To UBound(dim01Array)
        For j = LBound(dim02Array) To UBound(dim02Array)
            If outputRow <= (UBound(dim01Array) * UBound(dim02Array)) Then
                Cells(6 + outputRow, "H").Value = dim01Array(i, 1)
                Cells(6 + outputRow, "i").Value = dim02Array(j, 1)
                outputRow = outputRow + 1 '// 다음 출력 행 인덱스로 이동
            End If
        Next j
    Next i
    
End Sub

 

▷참고 자료

 

 

VBA(엑셀 매크로)배열 길이 가져오는 법(UBound, LBound)

VBA에서 배열크기를 취득하기 위해서는 마지막 인덱스 번호를 가져오는 UBound()함수와 처음 시작하는 인덱스 번호를 가져오는 LBound()함수를 활용하여 계산한다. 먼저 UBound(), LBound()의 구조와 활용

ttsoso.tistory.com

 

▷ 실행 결과

50개의 조합의 값을 표시 합니다. ChatGTP를 이용하면 초보자도 프로그램 개발이 가능 합니다.

[ 실행 결과 ]


영업문의 : lionkk@idt21c.com
카카오 채널 : http://pf.kakao.com/_fItAxb

 

 

'VBA For Creo' 카테고리의 다른 글

#1 IpfcModel  (0) 2023.08.18
#2 quilt의 면적 표시 - 고급 편  (0) 2023.08.16
#1 quilt의 면적 표시  (0) 2023.08.15
#9 IpfcBaseSession.Select() - Surface  (0) 2023.08.14
#8 IpfcBaseSession - 파일 Create Function  (0) 2023.08.12