2014-04-02 3 views
1

2 개의 텍스트 상자와 레이블이있는 userform이 있습니다. 텍스트 상자는 십진수 값을 삽입하기위한 것입니다. 레이블 역할은 첫 번째 값을 1 번째 값으로 나눈 결과 (텍스트 상자)를 보여줍니다.VBA의 FormatPercent 값 비교

삽입 된 값이 올바른지 확인하려고합니다. 틀린 경우 Label.Caption이 빨간색이됩니다. 실행되면

If Me.netto.Value = "" And Me.vat.Value = "" Or Me.vat.Value = "" Or Me.netto.Value = "" Then 

Else 
Procent_check.Caption = FormatPercent(CDbl(Me.vat)/CDbl(Me.netto), 2) 

    If Procent_check.Caption >= 27 Or Procent_check.Caption <= 15 Then Else: Procent_check.ForeColor = vbRed 

End If 

, 그것은 라인 If Procent_check.Caption >=...에서 오류 유형 불일치 말을 보여줍니다

나는이 같은 코드가 있습니다.

나는 값이 같거나보다 높은 27 또는 같거나 15보다 작은 경우 확인하기 위해 제공해야 어떤 종류의 아니 생각 ...

편집 : 지금은 코드, 작동하지 않는 색상 변경 ...

If Me.netto.Value <> "" And Me.vat.Value <> "" _ 
And Me.vat.Value <> 0 And Me.netto.Value <> 0 Then 

proc = CDbl(Me.vat)/CDbl(Me.netto) 
MsgBox (proc) 
MsgBox (Round(proc, 2)) 
Procent_check.Caption = FormatPercent(proc, 2) 
    If Round(proc, 2) >= 0.27 Or Round(proc, 2) <= 0.15 Then 
     Procent_check.ForeColor = vbBlack 
    Else 
     Procent_check.ForeColor = vbRed 
    End If 

End If 

답변

1

FormatPercent 반환 형식 "20%"에서 문자열하고 숫자이 문자열을 comare 수 없습니다. 작동

Dim res As Double 
If Me.netto.Value <> "" And Me.vat.Value <> "" And Me.netto.Value <> 0 _ 
     And IsNumeric(Me.netto.Value) And IsNumeric(Me.vat.Value) Then 
    res = CDbl(Me.vat)/CDbl(Me.netto) 
    Procent_check.Caption = FormatPercent(res, 2) 

    If res >= 0.27 Or res <= 0.15 Then 
     Procent_check.ForeColor = vbBlack 
    Else 
     Procent_check.ForeColor = vbRed 
    End If 
Else 
    Procent_check.Caption = "" 
End If 
+0

감사 :

대신이 일을보십시오! textbox가 다른 코드로 여러 경우에 대해 유효성이 검사되기 때문에 isnumeric이 필요하지 않습니다. – lowak

+0

도움이 되었으면 좋겠어요 :) 원한다면'IsNumeric' 부분을 제거 할 수 있습니다. 방금 신뢰를 위해 추가했습니다 :) –

+0

예, 내가 그거 했어. 한 가지만으로 나를 궁금해하게 만듭니다. 내가 15 % 또는 27 %를 얻었을 때 그것은 검은 색을 유지해야 할 때 빨간색으로 변합니다. 15,01 % 또는 26,9 % 일 때 발생하지 않습니다 ... – lowak