모두CBT

다음 중 아래와 같은 이벤트 프로시저에 대한 설명으로 옳지 않은 것은?… | [컴퓨터활용능력 1급 필기] 13년 2회차 기출문제 상세 페이지

1[컴퓨터활용능력 1급 필기] 13년 2회차
다음 중 아래와 같은 이벤트 프로시저에 대한 설명으로 옳지 않은 것은?

Private Sub 실행_DblClick()
 Dim strSearch As String
 Dim intWhere As Integer
 With Me!순번
  strSearch = InputBox("입력")
  ' Find string in text.
  intWhere = InStr(.Value, strSearch)
  If intWhere Then
   .SetFocus
   .SelStart = intWhere - 1
   .SelLength = Len(strSearch)
  Else
   MsgBox "String not found."
  End If
 End With
End Sub

1
intWhere 변수에는 10.56과 같은 실수를 저장할 수 없다.
2
strSearch 변수에는 사용자가 입력 상자를 통해 입력한 값이 저장된다.
3
InStr(.Value, strSearch)에서 .Value는 strSearch 변수의 값을 말한다.
4
입력 상자에서 입력된 문자열과 같은 내용을 찾지 못하면 'String not found.'란 메시지 상자를 표시 한다.
해설

이 프로시저는 '실행' 컨트롤을 더블클릭했을 때 실행되며, InputBox("입력")으로 받은 문자열을 strSearch에 저장한 뒤 InStr 함수로 그 위치를 찾습니다. 찾은 위치는 intWhere에 담기고, 값이 0이 아니면 해당 컨트롤에 포커스를 준 뒤 SelStart와 SelLength로 찾은 문자열을 선택 표시합니다.

핵심은 코드가 With Me!순번 … End With 블록으로 묶여 있다는 점입니다. With 블록 안에서 점(.)으로 시작하는 .Value, .SetFocus, .SelStart, .SelLength는 모두 Me!순번 컨트롤의 속성과 메서드를 가리킵니다. 따라서 InStr(.Value, strSearch)의 .Value는 순번 컨트롤에 들어 있는 값이며, 검색어인 strSearch 변수의 값이라는 설명은 옳지 않습니다. InStr은 앞 인수(찾을 대상 문자열) 안에서 뒤 인수(찾을 문자열)의 위치를 반환합니다.

나머지 설명은 모두 맞습니다. intWhere는 Integer로 선언되어 정수만 담을 수 있으므로 10.56 같은 실수는 그대로 저장되지 않고 반올림된 정수가 들어갑니다. strSearch에는 입력 상자로 받은 값이 저장되며, 찾는 문자열이 없으면 InStr이 0을 반환해 If 조건이 거짓이 되므로 Else 분기의 'String not found.' 메시지 상자가 나타납니다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.