데이터베이스 신규 데이터 추가 :: Insert_Record 명령문 사용법 총정리

시트에 입력된 데이터베이스에 새로운 데이터를 추가하는 Insert_Record 함수의 사용법 및 동작원리를 살펴봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2021. 04. 15. 16:39
URL 복사
메모 남기기 : (11)

데이터베이스 신규 데이터 추가 :: Insert_Record 명령문 사용법 총정리

엑셀 Insert_Record 명령문 목차 바로가기
요약

엑셀 Insert_Record 함수는 시트에 입력된 데이터베이스에 새로운 데이터를 추가하는 함수입니다.

명령문 구문
Insert_Record 시트, 값1, [값2], ...
사용된 인수 및 변수 알아보기
인수 설명
시트
[Range]
데이터베이스가 입력된 시트입니다. 현재 통합문서에서 사용중인 시트를 시트명으로 받아오려면 ThisWorkBook.WorkSheets("시트명") 으로 입력합니다.
값1, 값2, ...
[Variant]
새롭게 추가할 데이터를 머릿글 순서에 맞춰 차례대로 입력합니다. ID가 1씩 자동으로 증가하는 연속된 순번일 경우, ID는 제외하고 값만 입력하는 것에 주의합니다.

예제파일 다운로드

오빠두엑셀의 모든 강의 예제파일은 회원 여러분께 무료로 제공됩니다.

상세 설명

엑셀 Insert_Record 함수는 시트에 입력된 데이터베이스에 새로운 데이터를 추가하는 사용자 지정 함수입니다. Insert_Record 함수는 아래 규칙에 따라 입력된 시트에서 올바르게 동작합니다.

Insert_Record 예제
Insert_Record 함수에 사용할 시트 데이터 입력시 주의사항
  1. 시트에 입력된 데이터베이스는 반드시 A1 셀부터 시작해야 합니다.
  2. 병합된 셀이 없어야 합니다.
  3. 머릿글은 1행, ID는 A열에 입력되어야 합니다.
  4. 데이터가 추가될 때마다 ID가 자동으로 1씩 증가하는 연속된 숫자일 경우,
    - 머릿글에는 반드시 ID라는 문자가 포함되어야 합니다. (예: ID, ID직원, ID_구분, 등..)
    - 시트에 입력된 데이터 머릿글의 오른쪽으로 새롭게 추가될 ID 숫자가 입력되어야 합니다.
  5. ID가 연속된 숫자가 아닐 경,
    - 머릿글에는 ID라는 문자가 포함되지 않아야 합니다.
    - Insert_Record 함수의 첫번째 값으로 ID를 포함하여 입력합니다.

Insert_Record 함수는 데이터베이스 관련 VBA 함수 중 하나입니다. 더 다양한 종류의 데이터베이스 관련 함수는 아래 링크에서 자세히 확인할 수 있습니다.

실전 사용 예제
  1. 직원목록을 관리하는 데이터베이스 시트에 신규 데이터 추가
    '시트명 : 직원목록DB
    '머릿글 : ID | 사번 | 이름 | 부서 | 나이 | 연락처
    Insert_Record ThisWorkBook.WorkSheets("직원목록DB"), "OPD011", "김하늘", "인사팀", 32, "010-1234-1234"
  2. 제품구분을 관리하는 시트에 신규 데이터 추가
    '시트명 : 제품구분DB
    '머릿글 : ID | 제품구분
    Insert_Record ThisWorkBook.WorkSheets("제품구분DB"), "가전제품"
  3. 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
명령문 동작원리 단계별 알아보기
  1. 변수를 선언하고 변수의 기본값을 설정합니다.
    Dim cID As Long
    Dim cRow As Long
    Dim vaArr As Variant: Dim i As Long: i = 2
  2. 시트에서 사용 중인 범위의 마지막 행에서 1을 더한 값을 받아옵니다. (새로운 값을 추가할 행 번호)
    With WS
        cRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
  3. 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
  4. ID 머릿글에 ID라는 문자가 포함되지 않았을 경우, ID부터 시작하여 데이터를 하나씩 추가합니다.
        Else
            For Each vaArr In vaParamArr
                .Cells(cRow, i - 1).Value = vaArr
                i = i + 1
            Next
        End If
     
    End With
5 5 투표
게시글평점
11 댓글
Inline Feedbacks
모든 댓글 보기
11
0
여러분의 생각을 댓글로 남겨주세요.x