Excel에서 “기본”또는 “자리 표시 자”값을 갖는 방법이 있습니까? 좋은 사용 사례가 있습니다. 사용자가

사용자가 편집 할 수있는 셀이있는 스프레드 시트가 있지만 사용자가 입력 한 데이터가 없을 때마다 “기본”또는 “자리 표시 자”값을 원합니다. 이에 대한 몇 가지 좋은 사용 사례가 있습니다.

  • 사용자가 자신의 값을 입력하지 않았거나 삭제 한 경우 합리적인 가정을 제공하면서 수식 오류를 방지합니다.
    • 조건부 서식을 사용하여 사용자에게 기본값을 알리고 무시하는 것을 막을 수 있습니다. 그러면 해당 값이 의도 한 계산에 여전히 적합한 지 여부에 대한 정보를 선택할 수 있습니다.
  • 별도의 “명령”세그먼트 나 문서를 가질 필요없이 셀에 입력 될 내용에 대한 간단한 설명을 제공하십시오. 이것은 또한 적절하지 않은 경우에 가까운 “라벨”셀에 대한 필요성을 제거 할 것입니다.

원하는 것을 달성하려면 다음을 수행하는 수식, 스크립트 또는 기타 고급 스프레드 시트 옵션이 필요합니다.

  • 사용자가 데이터를 입력하기 전에 셀에 기본값을 표시하십시오.
  • 해당 셀에 사용자가 입력 한 데이터가없는 경우 셀을 참조하는 모든 수식에서 기본값을 찾을 수 있습니다.
  • 사용자가 자유롭게 (자연스럽게 “일반”셀에서와 동일하게) 표시된 값을 자신의 값이나 수식으로 덮어 쓰고 셀을 참조하는 수식에서 찾은 사용자 입력 데이터를 가질 수 있도록합니다.
  • 사용자 입력을 삭제하여 셀을 비우면 기본값으로 되돌립니다.

Excel 에서이 작업을 수행하는 방법이 있습니까? 아니면 여기에서 스프레드 시트 프로그램을 너무 많이 요청합니까?



답변

이 작업을 수행 할 수있는 방법이 없으므로 직접 작성해야합니다.

한 가지 가능성은 다음과 같습니다.

  1. 기본값을 원하는 각 셀에 대해 해당 셀을 참조하는 이름이 지정된 범위의 워크 시트 범위를 작성하고 주석 필드에 필수 기본값을 입력하십시오.
  2. 통합 문서 모듈 Workbook_SheetChange이벤트 추가

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        Dim nm As Name
        Dim cl As Range
    
        On Error Resume Next
        For Each cl In Target.Cells
            If IsEmpty(cl) Then
                For Each nm In Sh.Names
                    If nm.RefersToRange.Address = cl.Address Then
                        Application.EnableEvents = False
                        If IsNumeric(nm.Comment) Then
                            nm.RefersToRange.Value = Val(nm.Comment)
                        Else
                            nm.RefersToRange.Value = nm.Comment
                        End If
                        Application.EnableEvents = True
                        Exit For
                    End If
                Next
            End If
        Next
    End Sub
    

이것이하는 일은 :

  • 셀이 변경 될 때마다 이벤트 코드가 실행됩니다
  • 변경된 셀이 비어있는 경우
    • 셀을 참조하는 워크 시트 범위의 명명 된 범위를 찾으십시오.
    • 발견되면 이름 주석을 셀 값으로 복사하십시오. 숫자로 변환하는 것이 적절합니다.