Private Sub 요금입력_Click()
If IsNull(txt년도.Value) Then
MsgBox "정산년도를 입력하세요."
ElseIf IsNull(txt고객명.Value) Then
MsgBox "고객명을 입력하세요."
Else: IsNull (cmb등급코드.Value)
MsgBox "등급코드를 선택하세요."
End If
입력행 = [a3].Row + [a3].CurrentRegion.Rows.Count
Cells(입력행, 1) = txt고객
Cells(입력행, 2) = cmb코드
Cells(입력행, 3) = Cells(참조행, 8)
Cells(입력행, 4) = Cells(참조행, 9)
Cells(입력행, 5) = Cells(참조행, 10)
End Sub
책 정답은,
Private Sub 요금입력_Click()
If txt년도 = "" Then
MsgBox "정산년도를 입력하세요"
ElseIf txt고객 = "" Then
MsgBox "고객명을 입력하세요"
ElseIf cmb코드 = "" Then
MsgBox "등급코드를 선택하세요"
Else
참조행 = cmb코드.ListIndex + 4
입력행 = [a3].Row + [a3].CurrentRegion.Rows.Count
Cells(입력행, 1) = txt고객
Cells(입력행, 2) = cmb코드
Cells(입력행, 3) = Cells(참조행, 8)
Cells(입력행, 4) = Cells(참조행, 9)
Cells(입력행, 5) = Cells(참조행, 10)
End If
End Sub
end if 를 꼭 맨 마지막에 써줘야 하나요?
그리고 제가 한 것처럼
"" 대신에 isnull을 사용했는데 왜 쓰면 안되는 건가요?
안녕하세요.
end if를 다음 코드 위에 작성하시면 컨트롤이 비어있더라도 입력이 되게 됩니다.
입력행 = [a3].Row + [a3].CurrentRegion.Rows.Count
Cells(입력행, 1) = txt고객
Cells(입력행, 2) = cmb코드
Cells(입력행, 3) = Cells(참조행, 8)
Cells(입력행, 4) = Cells(참조행, 9)
Cells(입력행, 5) = Cells(참조행, 10)
문제의 의도는 컨트롤에 입력이 되지 않으면 입력하라는 메시지를 표시하고,
모두 입력된 경우에 입력을 받아드리라는 것입니다.
세 가지 모두를 입력했을 때만 폼의 데이터를 워크시트에 입력하라고 했으니까요.
단순한 컨트롤이 아니라 바운드된 필드로 참조할 때,
필드의 초기값은 Null이므로 값을 입력하지 않은 것은 IsNull로 검사합니다.
IsNull( )은 유효한 데이터를 전혀 포함하지 않으면 참(True)을, 포함하면 거짓(False)을 반환하는 함수입니다.
주로 목록상자에서 사용됩니다.
엑셀에서 컨트롤에 등록된 내용을 바로 확인하기 위해서는 txt이름 = "" 와 같이 사용하는 것입니다.
어떻게 작성하시든 코드가 정상실행되어 정확한 결과가 나온다면 상관 없습니다.
실제 시험에서 지시사항에 별다른 설명이 없었다면 둘중 어느것을 사용하시든 정확한 결과가 나오면 정답으로 인정될 것 입니다.
좋은 하루 보내세요.
-
관리자2019-08-14 23:45:01
안녕하세요.
end if를 다음 코드 위에 작성하시면 컨트롤이 비어있더라도 입력이 되게 됩니다.
입력행 = [a3].Row + [a3].CurrentRegion.Rows.Count
Cells(입력행, 1) = txt고객
Cells(입력행, 2) = cmb코드
Cells(입력행, 3) = Cells(참조행, 8)
Cells(입력행, 4) = Cells(참조행, 9)
Cells(입력행, 5) = Cells(참조행, 10)문제의 의도는 컨트롤에 입력이 되지 않으면 입력하라는 메시지를 표시하고,
모두 입력된 경우에 입력을 받아드리라는 것입니다.
세 가지 모두를 입력했을 때만 폼의 데이터를 워크시트에 입력하라고 했으니까요.
단순한 컨트롤이 아니라 바운드된 필드로 참조할 때,
필드의 초기값은 Null이므로 값을 입력하지 않은 것은 IsNull로 검사합니다.IsNull( )은 유효한 데이터를 전혀 포함하지 않으면 참(True)을, 포함하면 거짓(False)을 반환하는 함수입니다.
주로 목록상자에서 사용됩니다.엑셀에서 컨트롤에 등록된 내용을 바로 확인하기 위해서는 txt이름 = "" 와 같이 사용하는 것입니다.
어떻게 작성하시든 코드가 정상실행되어 정확한 결과가 나온다면 상관 없습니다.실제 시험에서 지시사항에 별다른 설명이 없었다면 둘중 어느것을 사용하시든 정확한 결과가 나오면 정답으로 인정될 것 입니다.
좋은 하루 보내세요.