프로젝트 및 실습 59

[VBA] Optional Arguments

VBA에서는 Optional Arguments를 사용할 수 있습니다. Optional Arguments란 Sub 또는 Function을 호출할 때 특정 Argument를 보낼 수도, 보내지 않을 수도 있게 구현하는 것을 말합니다. 예시를 들어보겠습니다. Sub Order(menu As String, Optional num As Integer) If IsMissing(num) Then num = 1 End If MsgBox "Menu: " & menu & " Num: " & num End Sub 주문한 음식을 출력하는 코드입니다. Parameter로 Menu의 이름을 String으로, 수량을 Integer 값으로 Optional 하게 받아옵니다. 혹시 Optional 한 값인 num이 비어있다면, IsMi..

[VBA] Do While과 Do Until

VBA에서 지원하는 여러 반복문 중에 Do While문과 Do Until문이 존재합니다. 둘 다 For문이나 While문에 밀려 잘 사용되지는 않지만 그 차이를 알아보겠습니다. Do While은 뒤에 따라오는 조건에 부합하는 경우 계속 반복을 수행합니다. 그리고 Do Until은 뒤따라오는 조건이 부합할 때까지 반복을 수행합니다. 말이 조금 모호한데 예시를 들어 자세히 알아보겠습니다. Sub Do_While_Example() Dim count As Integer Do While count < 5 Debug.Print count count = count + 1 Loop End Sub 간단한 Do While문 예시입니다. count라는 변수가 5보다 작은 경우 1씩 증가시켜주는 코드이죠. Debug.Prin..

[VBA] Select Case Construct (Switch문)

VBA에서는 다른 언어에서 Switch를 이용해 여러 조건을 동시에 필터링하는 기능을 Select Case 문을 이용해 사용할 수 있습니다. 기본 문법 Sub Select_Case_Example() Dim Num As Integer Num = Rnd() Mod 10 '0~9 랜덤 값 생성 Select Case Num Case Num < 5 MsgBox "Num is Smaller Than 5" Case Num = 5 MsgBox "Num is 5" Case Else MsgBox "Num is Bigger Than 5" End Select End Sub 기본적으로 Select Case {Expression}과 End Select 사이에 원하는 조건들을 Case 뒤에 삽입하는 방식으로 구현이 이루어집니다. ..

[VBA] User-Defined Data Types (사용자 정의 데이터 타입)

C 언어에서 사용하는 구조체와 같은 형태의 Data Type을 VBA에서도 사용할 수 있습니다. 선언 Type Student name As String age As Integer grade As Integer is_graduated As Boolean End Type 저는 Student라는 이름의 사용자 정의 데이터 타입을 선언해 보았습니다. Module 내에서만 선언이 가능하며, Module의 최상단에 선언해주시면 됩니다. Type 뒤에 원하는 데이터 타입 명을 입력해주고, Type과 End Type 사이에 사용하고자 하는 데이터들을 작성해주면 됩니다. 변수로 사용 Type Student name As String age As Integer grade As Integer is_graduated As B..

[VBA] 배열(Array) 사용하기

1차원 배열 배열 선언 Dim MyArray(0 To 9) As Integer Dim MyArray(9) As Integer 위의 두 코드 중 어떤 방식을 선택하든, 0으로 초기화된 크기 10의 일차원 배열을 선언할 수 있습니다. 배열 값 사용 Debug.Print (MyArray(0)) 위의 코드와 같이 선언한 배열 이름 우측에 괄호를 열고 인덱스 값을 작성하는 것으로 해당 값을 사용할 수 있습니다. N차원 배열 배열 선언 '2차원 배열 Dim MyArray2D(0 To 9, 0 To 9) As Integer '3차원 배열 Dim MyArray3D(0 To 9, 0 To 9, 0 To 9) As Integer N차원 배열의 선언 역시 1차원 배열과 같은 방식을 사용합니다. 괄호 안에 범위를 계속 추가해..

[VBA] Comment Object 삽입

VBA를 활용해 셀에 Comment를 삽입할 수 있습니다. Sub Add_Comment() Dim sht As Worksheet Set sht = Sheet6 sht.Range("A1").AddComment ("This is Comment") End Sub 참고로 이미 셀 내에 Comment가 존재하는 경우 AddComment를 실행하면 오류가 발생하게 됩니다. 이미 Comment가 존재하는지를 확인한 뒤, 존재하는 Comment가 없을 경우에만 Comment를 작성하고 싶다면 아래와 같이 코드를 작성해주면 됩니다. Sub Add_Comment() Dim sht As Worksheet Set sht = Sheet6 If sht.Range("A1").comment Is Nothing Then sht.Ran..

[Mendix] Domain model에서 Validation rules 추가

데이터베이스의 테이블을 정의할 때 데이터별로 Validation Rule들을 만들어 주고 싶을 경우가 생깁니다. 원하는 Entity를 우클릭하여 [Properties]에 들어가줍니다. [Validation Rules] 탭에서 [New] 버튼을 통해 쉽게 적용할 수 있습니다. [Student Num] Attribute는 Unique하게 관리하고 싶다면 위와 같이 만들어 줄 수 있습니다. [Age] Attribute를 15이상 100이하로 만들어주고 싶다면 위와 같이 설정할 수 있습니다. 이와 같은 방법으로 데이터의 조건을 추가해줌으로써 데이터베이스를 한층 더 효율적으로 관리할 수 있습니다. 이렇게 Validation Rule이 적용된 Attribute는 우측에 초록색 체크 아이콘이 나타나게 됩니다.

[Mendix] 데이터베이스 테이블 만들기

Mendix에서 데이터베이스 테이블을 만드는 방법을 알아보겠습니다. Mendix Studio에서 [Domain model]을 클릭해줍니다. 화면 상단에 보면 [Entity]라는 버튼이 있습니다. 이 버튼을 누르고 화면 아무곳에나 Entity를 만들어줍니다. 이 Entity가 하나의 테이블 역할을 하게 됩니다. 이제 만든 Entity를 우클릭 한 후 [Properties]를 클릭해줍니다. 가장 위에 있는 Name은 테이블의 이름이라고 생각하시면 됩니다. 본인이 원하는 이름으로 바꾸어줍니다. 그리고 아래 쪽에 있는 [Attributes] 하단의 [New] 버튼을 눌러줍니다. 여기서 원하는 Attribute를 추가할 수 있습니다. 가장 위에 위치한 Name 칸을 이용해 Attribute의 이름을 지정할 수 있..

[Mendix] Mendix Studio 사용하기

Mendix Studio는 대표적인 Low Code, No Code 개발 툴입니다. 오늘은 Mendix Studio를 사용하기 위한 준비를 해보겠습니다. 우선 https://signup.mendix.com/index.html 에서 Mendix에 회원가입을 해줍니다. Mendix signup.mendix.com 가입하셨다면 아래 링크에서 Mendix Studio를 설치하실 수 있습니다. https://marketplace.mendix.com/link/studiopro/9.15.0 Mendix Studio pro Mendix Studio pro 9.15.0 Stable June 29, 2022 Mendix Studio Pro is our low-code IDE for professional developer..

[VBA] Access DB 내 모든 테이블 List 출력

VBA를 이용해 개발을 하다보면 Access DB 내에 있는 모든 테이블의 이름을 List로 출력해주어야 할 일이 종종 있습니다. 우선 다음과 같이 테이블을 몇 개 만들어 줍니다. 저는 table1, table2, table3라는 3개의 테이블을 만들어주었습니다. 그리고 module에 아래의 코드를 삽입하고 실행해줍니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Sub Show_Table_List() Dim dbCon As ADODB.Connection '데이터베이스와의 연결을 담당하는 객체 Dim dbRs As New ADODB.Recordset '데이터 탐색 및 조작을 담당하는 객체 Set dbCon =..