이 페이지에서
구문
Update_Record 시트, ID, [값1], [값2], ...
인수구분
형식 설명
시트
필수
Worksheet
데이터베이스를 업데이트할 대상 시트입니다.
현재 통합문서의 시트를 시트명으로 지정하려면 ThisWorkBook.WorkSheets("시트명") 형태로 입력합니다.
ID
필수
Variant
업데이트할 데이터를 참조할 ID 입니다.
숫자 또는 문자 모두 입력할 수 있습니다.
값1, 값2, ...
선택
Variant
업데이트할 데이터를 머릿글 순서에 맞추어 차례대로 입력합니다.
중간에 업데이트하지 않을 값이 있을 경우 공백으로 건너뛰어 입력할 수 있습니다.
마스터 코드
복사한 코드는 VBA 편집기(Alt + F11) 새 모듈에 붙여넣어 사용하세요Sub Update_Record(WS As Worksheet, ParamArray vaParamArr() As Variant)
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'수정 및 배포 시 출처를 반드시 명시해야 합니다.
'■ Update_Record 함수
'■ 시트의 데이터베이스를 업데이트 합니다. 업데이트 할 데이터의 첫번째 값은 반드시 ID여야 합니다.
'■ 사용방법
'Update_Record 시트, ID, 값1, 값2, ...
'▶ 인수 설명
'_____________WS : 데이터베이스를 업데이트 할 시트입니다.
'_____________ID : 업데이트 할 데이터를 대표하는 ID 입니다. ID는 데이터베이스의 첫번째 열에 입력되어 있어야 합니다.
'_____________값1, 값2, ... : 업데이트 할 데이터를 머릿글 순서에 맞추어 차례대로 입력합니다. 업데이트하지 않을 값은 공백으로 건너 뛸 수 있습니다.
'###############################################################
Dim cRow As Long
Dim i As Long: Dim j As Long
Dim ID As Variant
If IsNumeric(vaParamArr(0)) = True Then ID = CLng(vaParamArr(0)) Else ID = vaParamArr(0)
With WS
cRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For j = 1 To cRow
If .Cells(j, 1).Value = ID Then
For i = 1 To UBound(vaParamArr)
If Not IsMissing(vaParamArr(i)) Then .Cells(j, i + 1).Value = vaParamArr(i)
Next
End If
Next
End With
End Sub
활용 예제
'직원DB' 시트에서 7번 ID 의 값 갱신하기
'시트명 : 직원DB
'필드 : ID, 이름, 부서, 직급, 나이
Update_Record ThisWorkBook.WorkSheets("직원DB"), 7, "김하늘", "인사팀", "대리", 40
'직원DB' 시트에서 7번 ID 의 직급만 갱신하기
'시트명 : 직원DB
'필드 : ID, 이름, 부서, 직급, 나이
Update_Record ThisWorkBook.WorkSheets("직원DB"), 7, , , "대리"
안내사항
ID 는 반드시 데이터베이스의 첫 번째 열에 입력되어 있어야 하며, 데이터베이스는 시트의 A1 셀부터 시작해야 합니다.
중복되는 ID 가 있을 경우 위에서부터 첫 번째에 위치한 ID 를 참조하여 값을 업데이트합니다.
댓글 2
로그인 후 댓글을 작성할 수 있습니다.
jes
2021.01.26 11:50
강민준🤗
2024.08.11 13:08
좋은 자료 감사합니다.🙇♂️