엑셀 시트 데이터 삭제 :: Delete_Record 함수

지정한 시트의 데이터를 삭제하는 Delete_Record 함수의 사용법 및 동작원리를 알아봅니다.

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

엑셀 시트 데이터 삭제 :: Delete_Record 명령문 사용법 총정리

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

엑셀 Delete_Record 함수는 시트에서 지정한 ID 또는 행번호의 데이터를 삭제하는 사용자 지정 함수입니다.

명령문 구문
Delete_Record 시트, ID, [행번호여부], [ID열]
사용된 인수 및 변수 알아보기
인수 설명
시트
[WorkSheet]
데이터를 삭제할 시트입니다. 현재 실행중인 통합문서의 시트를 시트명으로 참조하려면 시트를 아래와 같이 지정합니다.

ThisWorkBook.WorkSheets("시트명")

ID
[Variant]
삭제할 데이터의 ID 또는 행번호입니다. 숫자와 문자 형태 모두 입력가능합니다.
행번호여부
[Boolean, 선택인수]
TRUE일 경우 입력한 ID값을 행 번호로 참조합니다. 기본값은 FALSE 입니다.
ID열
[Long, 선택인수]
ID가 입력된 열을 지정합니다. 기본값은 1 입니다.

예제파일 다운로드

  • [엑셀VBA함수] Delete_Record 명령문
    예제파일
상세 설명

엑셀 Delete_Record 함수는 시트에서 지정한 ID 또는 행번호의 데이터를 삭제하는 사용자 지정 함수입니다. ID는 숫자와 문자 형태로 모두 입력 가능합니다.

ID가 없을 경우 [행번호여부]를 TRUE로 설정한 뒤, 행번호를 참조하여 데이터를 삭제할 수도 있습니다. ID열의 기본값은 1이며, 다른 열에 위치한 ID를 참조해야 할 경우 [ID열] 참조할 열 번호로 변경합니다.

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

실전 사용 예제
  1. '직원DB' 시트에서 ID가 7인 데이터를 삭제하기
    '시트명 : 직원DB
    Delete_Record ThisWorkBook.WorkSheets("직원DB"), 7
  2. '제품DB' 시트에서 10번째 행의 데이터를 삭제하기
    '시트명 : 제품DB
    Delete_Record ThisWorkBook.WorkSheets("제품DB"), 10, TRUE

엑셀 시트 데이터 삭제, Delete_Record 명령문 동작원리

Delete_Record 명령문 전체 코드
Sub Delete_Record(WS As Worksheet, ID, Optional IsRowNo As Boolean = False, Optional IDcol As Long = 1)
 
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'수정 및 배포 시 출처를 반드시 명시해야 합니다.
 
'■ Delete_Record 함수
'■ 시트의 특정 데이터를 삭제합니다. 삭제할 ID를 입력하거나 행번호로 직접 지정할 수 있습니다.
'■ 사용방법
'Delete_Record ThisWorkBook.WorkSheets("시트명"), 4
'▶ 인수 설명
'_____________WS                : 데이터를 삭제할 시트입니다.
'_____________ID                  : 데이터를 삭제하기 위하여 참조할 ID 또는 행번호입니다.
'_____________IsRowNo       : [선택인수] TRUE일 경우 입력한 행 번호의 데이터를 삭제합니다. 기본값은 FALSE 입니다.
'_____________IDCol             : [선택인수] ID가 입력된 열 번호입니다. 기본값은 1 입니다.
'###############################################################
 
Dim i As Long
Dim cRow As Long
 
If IsNumeric(ID) = True Then ID = CLng(ID)
 
With WS
    If IsRowNo = False Then
        cRow = .Cells(.Rows.Count, IDcol).End(xlUp).Row
        For i = 1 To cRow
            If .Cells(i, IDcol).Value = ID Then .Cells(i, 1).EntireRow.Delete: Exit For
        Next
    Else
        .Cells(ID, 1).EntireRow.Delete
    End If
End With
 
End Sub
명령문 동작원리 단계별 알아보기
  1. 변수를 선언합니다.
    Dim i As Long
    Dim cRow As Long
  2. 받아온 ID가 숫자값일 경우, 정수형태로 변경합니다.
    If IsNumeric(ID) = True Then ID = CLng(ID)
  3. [행번호여부]가 False일 경우, 데이터베이스의 ID를 참조하여 데이터를 삭제합니다.
    With WS
    If IsRowNo = False Then
    cRow = .Cells(.Rows.Count, IDcol).End(xlUp).Row
    For i = 1 To cRow
    If .Cells(i, IDcol).Value = ID Then .Cells(i, 1).EntireRow.Delete: Exit For
    Next
  4. [행번호여부]가 True일 경우, 데이터베이스의 n번째 행 데이터를 삭제합니다.
    Else
    .Cells(ID, 1).EntireRow.Delete
    End If
    End With
5 1 투표
게시글평점
1 댓글
Inline Feedbacks
모든 댓글 보기
1
0
여러분의 생각을 댓글로 남겨주세요.x