배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Excel 버전:   공통
검색어:   상태표시줄, 결과
제목:   [팁#18] 상태표시줄에 계산결과를 보여주자
     
 

New Page 3
  STEP> 따라하기
 

아기자기한 것을 좋아하는 사람들은 각종 팁이나 꼼수를 좋아하는 경향이 있습니다. 엑셀에도 상상하지 못한 각종 잔재주가 숨어 있는데, 가령 수식 입력줄에서 수식에 입력포인터를 두고 키를 누르면 계산결과를 보여주는 등등.

엑셀에서는 선택한 셀 영역에 대한 간단한 각종 계산을 상태표시줄에 보여주는 기능이 있습니다.

위의 그림에서 6개의 계산 중 하나를 선택할 수 있습니다. 이를 선택하고 셀 영역을 선택하면 상태표시줄 오른쪽에 선택한 계산의 결과를 보여줍니다. 가령 위의 그림에서 1,2,3이 입력된 B6:B8 셀 영역을 선택하면 개수는 ‘3’을 보여줄 것입니다.

이러한 기능이 매우 기특해 보이지만 종종 아쉬운 경우가 있습니다. 계산의 종류가 6가지라는 것입니다. 통계를 자주 사용한다면 표준편차나 분산을 보여준다던가 선택한 영역 내에서 정렬된 목록을 보여준다면 좋을 텐데.

이런 기능을 구현하려면 워크시트의 SelectionChange이벤트 프로시져를 이용합니다. 마침 SelectionChange이벤트 프로시저에서는 Target이라는 Range형 매개변수를 얻을 수 있습니다.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

Target은 선택한 영역을 돌려주는 Range형 개체변수입니다. 따라서 Target의 내용을 계산하여 상태표시줄에 보여주면 되는 것입니다.

하지만 위의 이벤트 프로시져는 해당 워크시트에만 해당하는 것입니다. 통합문서내 모든 워크시트에서 사용하려면 ThisWorkbook개체의 SheetSelectionChange이벤트를 이용합니다.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

매개변수로 전달되는 Sh는 해당 워크시트를 의미하고 Target은 SelectionChange이벤트 프로시져와 마찬가지로 선택한 셀 영역을 의미합니다.

다음은 SheetSelectionChange를 이용하여 선택영역에서 중간값(Median)을 계산하는 예입니다. 중간값은 엑셀의 워크시트함수인 MEDIAN()을 사용하였습니다.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo ErrHandler

Dim myVar As Double

'// 사용자가 원하는 함수를 사용한다.
'// 여기에선 선택한 범위내 값중에서 중간값을 돌려주는
'// Median()워크시트 함수를 사용하였다.
myVar = Application.WorksheetFunction.Median(Target)

If myVar <> 0 Then
'// 계산결과가 0이 아니면 상태표시줄에 결과를 표시한다
Application.StatusBar = "중간값 : " & Format(myVar, "###,##0.0000")
Else
'// 계산결과가 0이면 상태표시줄을 디폴트 상태로 변경한다
Application.StatusBar = False
End If

Exit Sub

ErrHandler:
'// 에러를 제거한다
On Error GoTo 0
'// 상태표시줄을 디폴트 상태로 변경한다
Application.StatusBar = False
End Sub

계산이 이루어진다면 결과를 상태표시줄에 표시하지만 계산을 하지 못하고 에러가 나는 경우 상태표시줄을 디폴트로 변경합니다.

(Application.StatusBar = False)

간단한 예를 위해 Median()함수를 사용하였지만 여러분의 용도에 맞게 다른 함수를 응용해보는 것도 좋을 듯합니다.