이전 질문에서 고수분들의 도움을 받아 완전 자동화했습니다..ㅎㅎ
GPT한테 물어보니 change 라는 시트 코드에 추가하면 된다고하여 추가했더니 너무 편합니다.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Dim f As String
On Error GoTo ExitHandler
' 이벤트 루프 방지
Application.EnableEvents = False
' 변경된 모든 셀 확인
For Each c In Target
'1) 수식인지 확인
If c.HasFormula Then
f = c.Formula
'2) 이미 IFERROR로 감싸져 있는지 확인
If InStr(1, f, "IFERROR(", vbTextCompare) = 0 Then
'3) =IFERROR(원래수식, "") 형태로 재작성
c.Formula = "=IFERROR(" & Mid(f, 2) & ","""")"
' Mid(f,2) 는 '=' 제거하고 내부 내용만 가져오기
End If
End If
Next c
ExitHandler:
Application.EnableEvents = True
End Sub이렇게 함수를 넣으면
자동으로 IFERROR 함수가 씌워집니다.
대신 코드는 시트가 있는 Sheet1 이나 Sheet2 같은 코드입력기에 넣어야 됩니다. 모듈에 넣으면 안되더라구요
If InStr(1, f, "IFERROR(", vbTextCompare) = 0 Then
=> 수식의 안쪽에만 IfError가 있어도 무시해 버리기 때문에 다른 방법을 검토하셔야 합니다.
아 그렇네요;ㅠ
gpt한테 물어보니
If InStr(1, f, "=IFERROR(", vbTextCompare) = 0 Then이렇게 바꾸면 된다고 해서 수정하니 잘 됩니다!
한수배웠습니다
감사합니다