본문 바로가기
카테고리 없음

[엑셀]매크로

by 코딩스미스 2025. 6. 1.

' 입력값을 두 배로 만들어 반환하는 사용자 정의 함수 (UDF)
Function DoubleTheValue(inputValue As Variant) As Variant
    ' 입력값이 숫자인지 확인
    If IsNumeric(inputValue) Then
        ' 숫자인 경우 2를 곱한 값을 반환
        DoubleTheValue = CDbl(inputValue) * 2
    Else
        ' 숫자가 아닌 경우, 오류 값(#VALUE!)을 반환
        DoubleTheValue = CVErr(xlErrValue)
    End If
End Function

' DoubleTheValue 함수를 사용하여 Sheet1의 A1, A2 셀 값을 처리하는 프로시저
Sub ApplyDoubleToSheetCells()

    Dim ws As Worksheet
    Dim valA1 As Variant
    Dim valA2 As Variant

    ' 작업할 시트 지정 (Sheet1)
    On Error Resume Next ' 만약 "Sheet1"이 없을 경우 오류를 건너뛰기 위함 (선택적)
    Set ws = ThisWorkbook.Sheets("Sheet1")
    If ws Is Nothing Then
        MsgBox "Sheet1을 찾을 수 없습니다.", vbCritical, "시트 오류"
        Exit Sub
    End If
    On Error GoTo 0 ' 오류 처리 기본값으로 복원

    ' --- A1 셀 처리 ---
    valA1 = ws.Range("A1").Value

    ' DoubleTheValue 함수를 호출하여 결과를 B1 셀에 입력
    ' DoubleTheValue 함수 내에서 숫자 검사를 하므로, 여기서는 직접 호출
    ws.Range("B1").Value = DoubleTheValue(valA1)

    ' 만약 DoubleTheValue 함수가 오류를 반환했을 때 B1 셀에 특정 메시지를 표시하고 싶다면:
    ' If IsError(ws.Range("B1").Value) Then
    '     ws.Range("B1").Value = "A1: 숫자 아님"
    ' End If

    ' --- A2 셀 처리 ---
    valA2 = ws.Range("A2").Value

    ' DoubleTheValue 함수를 호출하여 결과를 B2 셀에 입력
    ws.Range("B2").Value = DoubleTheValue(valA2)

    ' 만약 DoubleTheValue 함수가 오류를 반환했을 때 B2 셀에 특정 메시지를 표시하고 싶다면:
    ' If IsError(ws.Range("B2").Value) Then
    '     ws.Range("B2").Value = "A2: 숫자 아님"
    ' End If

    MsgBox "A1, A2 셀의 값을 두 배로 하여 B1, B2 셀에 적용했습니다.", vbInformation, "작업 완료"

End Sub