데이터베이스 신규 데이터 추가 :: Insert_Record 명령문 사용법 총정리
엑셀 Insert_Record 명령문 목차 바로가기
요약
엑셀 Insert_Record 함수는 시트에 입력된 데이터베이스에 새로운 데이터를 추가하는 함수입니다.
명령문 구문
Insert_Record 시트, 값1, [값2], ...
사용된 인수 및 변수 알아보기
인수 | 설명 |
시트 [Range] |
데이터베이스가 입력된 시트입니다. 현재 통합문서에서 사용중인 시트를 시트명으로 받아오려면 ThisWorkBook.WorkSheets("시트명") 으로 입력합니다. |
값1, 값2, ... [Variant] |
새롭게 추가할 데이터를 머릿글 순서에 맞춰 차례대로 입력합니다. ID가 1씩 자동으로 증가하는 연속된 순번일 경우, ID는 제외하고 값만 입력하는 것에 주의합니다. |
예제파일 다운로드
오빠두엑셀의 모든 강의 예제파일은 회원 여러분께 무료로 제공됩니다.
- [엑셀VBA함수] Insert_Record 명령문예제파일
상세 설명
엑셀 Insert_Record 함수는 시트에 입력된 데이터베이스에 새로운 데이터를 추가하는 사용자 지정 함수입니다. Insert_Record 함수는 아래 규칙에 따라 입력된 시트에서 올바르게 동작합니다.
Insert_Record 함수에 사용할 시트 데이터 입력시 주의사항 - 시트에 입력된 데이터베이스는 반드시 A1 셀부터 시작해야 합니다.
- 병합된 셀이 없어야 합니다.
- 머릿글은 1행, ID는 A열에 입력되어야 합니다.
- 데이터가 추가될 때마다 ID가 자동으로 1씩 증가하는 연속된 숫자일 경우,
- 머릿글에는 반드시 ID라는 문자가 포함되어야 합니다. (예: ID, ID직원, ID_구분, 등..)
- 시트에 입력된 데이터 머릿글의 오른쪽으로 새롭게 추가될 ID 숫자가 입력되어야 합니다. - ID가 연속된 숫자가 아닐 경우,
- 머릿글에는 ID라는 문자가 포함되지 않아야 합니다.
- Insert_Record 함수의 첫번째 값으로 ID를 포함하여 입력합니다.
Insert_Record 함수는 데이터베이스 관련 VBA 함수 중 하나입니다. 더 다양한 종류의 데이터베이스 관련 함수는 아래 링크에서 자세히 확인할 수 있습니다.
실전 사용 예제
- 직원목록을 관리하는 데이터베이스 시트에 신규 데이터 추가
'시트명 : 직원목록DB '머릿글 : ID | 사번 | 이름 | 부서 | 나이 | 연락처 Insert_Record ThisWorkBook.WorkSheets("직원목록DB"), "OPD011", "김하늘", "인사팀", 32, "010-1234-1234"
- 제품구분을 관리하는 시트에 신규 데이터 추가
'시트명 : 제품구분DB '머릿글 : ID | 제품구분 Insert_Record ThisWorkBook.WorkSheets("제품구분DB"), "가전제품"
- ID가 연속된 순번이 아닌 데이터베이스에 신규 데이터 추가
'시트명 : 제품규격DB '머릿글 : 규격 | 하위단위 | 단위수량 Insert_Record ThisWorkBook.WorkSheets("제품규격DB"), "BOX", "EA", 150
데이터베이스 새로운 데이터 추가, Insert_Record 함수 동작원리
Insert_Record 명령문 전체 코드
Sub Insert_Record(WS As Worksheet, ParamArray vaParamArr() As Variant) '############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '수정 및 배포 시 출처를 반드시 명시해야 합니다. '■ Insert_Record 함수 '■ 데이터베이스가 입력된 시트에 새로운 데이터를 추가합니다. '■ 사용방법 'Insert_Record ThisWorkBook.WorkSheets("시트명"), "이름", "나이", "지역", ... '▶ 인수 설명 '_____________WS : 새로운 데이터를 추가할 대상 시트입니다. '_____________값 : 새롭게 추가할 데이터를 머릿글 순서에 맞춰 차례대로 입력합니다. 새로 추가할 ID는 머릿글 우측에 입력되어 있어야하며, 값이 추가될 때마다 1씩 자동으로 증가합니다. '############################################################### Dim cID As Long Dim cRow As Long Dim vaArr As Variant: Dim i As Long: i = 2 With WS cRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 If InStr(1, .Cells(1, 1).Value, "ID") > 0 Then cID = .Cells(1, .Columns.Count).End(xlToLeft).Value .Cells(1, .Columns.Count).End(xlToLeft).Value = .Cells(1, .Columns.Count).End(xlToLeft).Value + 1 .Cells(cRow, 1).Value = cID For Each vaArr In vaParamArr .Cells(cRow, i).Value = vaArr i = i + 1 Next Else For Each vaArr In vaParamArr .Cells(cRow, i - 1).Value = vaArr i = i + 1 Next End If End With End Sub
명령문 동작원리 단계별 알아보기
- 변수를 선언하고 변수의 기본값을 설정합니다.
Dim cID As Long Dim cRow As Long Dim vaArr As Variant: Dim i As Long: i = 2
- 시트에서 사용 중인 범위의 마지막 행에서 1을 더한 값을 받아옵니다. (새로운 값을 추가할 행 번호)
With WS cRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
- ID 머릿글에 ID라는 문자가 포함되었을 경우, 머릿글 우측에 입력된 ID를 참고하여 새로운 데이터를 추가합니다.
If InStr(1, .Cells(1, 1).Value, "ID") > 0 Then cID = .Cells(1, .Columns.Count).End(xlToLeft).Value .Cells(1, .Columns.Count).End(xlToLeft).Value = .Cells(1, .Columns.Count).End(xlToLeft).Value + 1 .Cells(cRow, 1).Value = cID For Each vaArr In vaParamArr .Cells(cRow, i).Value = vaArr i = i + 1 Next
- ID 머릿글에 ID라는 문자가 포함되지 않았을 경우, ID부터 시작하여 데이터를 하나씩 추가합니다.
Else For Each vaArr In vaParamArr .Cells(cRow, i - 1).Value = vaArr i = i + 1 Next End If End With