2014-07-16 6 views
0

일부 수치를 입력해야하는 사용자 입력 양식을 만들고 있습니다. 2.4와 6 사이의 숫자 만 입력하겠습니다. 어떻게해야합니까? 사전에텍스트 상자에 if 문 사용

Private Sub txtHeight_Change() 
    HeightNumber = CStr(Val(Me.txtHeight.Value)) 

If HeightNumber >= 2.4 And HeightNumber <= 6 Then 
    Else 
     MsgBox ("You have entered an incorrect number") 
End If 

totcost = painttype + undercost + HeightNumber 
     TotalCost.Value = totcost 
End 

감사 :

순간에 내 코드는 이것이다.

답변

0

ImClarky

을 인용 이유는 단순히 숫자 문자열을 두 배로하고, 검사를 수행하기로 변환?

CDbl 때문에 빈 문자열은 항상 오류를 유발합니다 (특히 내가 이해 한대로 문자열의 모든 변경 사항에 대해 매크로가 작동하기 때문에). On Error Goto이 Sub의 끝으로 오류를 처리 할 수 ​​있으며, 단순히 문자열 = ""인지 확인할 수 있습니다. 이 경우 Sub를 실행하지 마십시오.

는의가 txtHeight이 텍스트 상자

Private Sub txtHeight_Change() 

If Not Me.txtHeight = "" Then 

    If CDbl(Me.txtHeight) >= 2.4 And CDbl(Me.txtHeight) <= 6 Then 
     ' Put your code here, I think those following belong here too 
     totcost = painttype + undercost + CDbl(Me.txtHeight) 
     TotalCost.Value = totcost 
    Else 
     MsgBox ("You have entered an incorrect number") 
    End If 

End If  

End Sub 

(이 테스트되지 않았습니다)

+0

이 제안을 해주셔서 감사합니다. Noldor - 어쨌든 제발 저의 코드로 놓아주십시오. –

+0

요청에 따라 코드가 추가되었습니다. – Noldor130884

+0

대단히 감사합니다. Noldor 님, 문제를 해결했습니다. @ImClarky 덕택입니다. –

1

문제가 해결 될지 모르지만 변수 HeightNumber이 문자열 (CStr)로 변환되었는지 확실하지 않습니다. 그러면 문자열 변수에 대해 작동하지 않으므로 연산자 If (<=>=)이 작동하지 않게됩니다.

+0

이유는 단순히 숫자 문자열을 두 배로하고, 검사를 수행하는 변환했다 가정 해 봅시다? – Noldor130884

+0

불행히도 문자열이 아니라면 오류가 발생하고 오류가 발생합니다 (13). 정말로 부동 소수점이되어야합니다. –

+0

줄에 오류가 발생합니까? totCost = paintcost + undercost + HeightNumber? 그렇다면 다른 두 변수가 같은 유형 (err 13 유형 불일치)이 아니기 때문일 수 있습니다. 즉, CStr (...)을 사용했기 때문일 수 있습니다. 다른 두 변수에 – ImClarky