다른 사람이 사용할 워크 시트를 개발할 때 통합 문서를 닫을 수 있도록 허용하기 전에 특정 셀을 채워야 할 수 있습니다. 이 작업을 수행하는 Excel에는 기본 제공 기능이 없지만 필요한 검사를 수행하고 계속하기 위해 사용자를 중지하는 매크로를 만들 수 있습니다. 이것은 BeforeClose 이벤트에 연결된 다소 간단한 매크로 일 수 있습니다.

BeforeClose는 어떤 방법 으로든 통합 문서를 닫을 때마다 트리거됩니다. 트릭은 이벤트 처리기 내에서 Cancel 속성을 설정하는 것입니다. Cancel을 True로 설정하면 통합 문서 닫기가 중지되고 변경되지 않은 상태로두면 통합 문서가 정상적으로 닫힙니다.

예를 들어, 다음 매크로는 A1 셀에 어떤 것이 있는지 확인합니다. 그렇다면 통합 문서가 닫힙니다. 그렇지 않은 경우 사용자에게 누락 된 항목이 있다는 알림이 표시되고 닫기가 취소됩니다.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If Cells(1, 1).Value = "" Then         MsgBox "Please fill cell A1"

Cancel = True     End If End Sub

원하는 경우 더 정교한 매크로를 만들 수 있습니다. 예를 들어 확인해야하는 여러 셀이있을 수 있습니다. 다음 버전은 “필수”라는 범위를 확인하여 범위의 각 셀에 항목이 포함되어 있는지 확인합니다. 셀이 비어 있으면 통합 문서를 저장하거나 닫을 수 없습니다. (이 매크로는 BeforeClose 이벤트 동안뿐만 아니라 BeforeSave 이벤트 동안에도 트리거됩니다.) 두 이벤트 처리기는 통합 문서의 코드에 배치되고 ForceDataEntry 매크로는 일반 매크로 모듈에 배치됩니다.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Cancel = ForceDataEntry()

End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _   Cancel As Boolean)

Cancel = ForceDataEntry()

End Sub
Sub ForceDataEntry() As Boolean     Dim rng As Range     Dim c As Variant     Dim rngCount As Integer     Dim CellCount As Integer

Set rng = Range("Mandatory")

rngCount = rng.Count

CellCount = 0     For Each c In rng         If Len(c) > 0 Then             CellCount = CellCount + 1         End If     Next c     ForceDataEntry = False     If CellCount <> rngCount Then         ForceDataEntry = True     End If End Sub

매크로를 필요로하는 모든 구현 (이것처럼)에는 잠재적 인 문제가 있습니다. 사용자는 통합 문서가로드 될 때 매크로를 사용하지 않도록 결정할 수 있습니다. 매크로가 비활성화 된 상태에서 통합 문서를 실행하는 경우 값이 포함 된 모든 필수 셀 없이도 통합 문서를 저장할 수 있습니다.

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (9572)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다. 여기에서 Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전을 찾을 수 있습니다.

link : / excelribbon-Requiring_Input [입력 필요].