Jump to content
jmaocubo

[RESOLVIDO] Textboxes soma/divisão/... de valores incorrecto

Recommended Posts

jmaocubo

Olá a todos

Pedia-vos a vossa ajuda e/ou conselho.

segue link do exemplo: http://www.2shared.com/file/qZ7d6_w-/Soma_Textbox.html

Tenho uma userform com 3 textboxes. Basicamente os valores que são introduzidos nas textboxes somam, dividem ou multiplicam.

O problema é que valores com decimais "atropelam-se" e não são reconhecidos na sua grandeza.

Preciso que seja reconhecido o caracter "." e "," como separador decimal e em VBA utilizei já várias formas incluindo o replace(expressão,".",",")

mas o erro persiste.

Se usar (20+20)/(10) = 4

mas se usar (20.0+20.0)/(10) = valor disparatado (diferente de 4)

se usar (20,0+20,0)/(10) = valor disparatado (diferente de 4)

se usar (20+20,0)/(10) = valor disparatado (diferente de 4)

e por aí fora....

Alguma sugestão, como abordar isto em VBA.

O link que envio tem a formulação em excel (fórmulas) e em VBA

Toda a ajuda é bem vinda, :P

Obrigado

Miguel

Share this post


Link to post
Share on other sites
FreiNando

Tudo o que escremos nas Textbox fica guardado como texto.

Deves verificar se é possivel converter para número. Depois passas para uma variável numerica adequada e então fazes os calculos.

O teu procedimento deveria ficar assim:

Private Sub CommandButton1_Click()
    [D3:J3].ClearContents
     
    If Not IsNumeric(PAUL) Then
        MsgBox "Introduza um numero"
        PAUL.SetFocus
    ElseIf Not IsNumeric(IUL) Then
        MsgBox "Introduza um numero"
        IUL.SetFocus
    ElseIf Not IsNumeric(IULmax) Then
        MsgBox "Introduza um numero"
        IULmax.SetFocus
    Else
        Dim P As Double, I As Double, M As Double
        P = PAUL: PAUL = ""
        I = IUL: IUL = ""
        M = IULmax: IULmax = ""
        [J3] = P
        [H3] = I
        [i3] = M
        [D3] = (I + M) / P
        
        Select Case Sheets("Auxiliar").Range("E3").Value
            Case Is < 0
                [F3] = "E"
            Case Is < 0.1
                [F3] = "D"
            Case Is <= 0.4
                [F3] = "C"
            Case Is <= 0.7
                [F3] = "B"
            Case Is < 1
                [F3] = "A"
            Case Else
                [F3] = "A+"
        End Select
         
        UserForm2.Hide
    End If
End Sub

Testei com as definições regionais com separador decimal como (.) e como (,).

Em VBA a expressão (20,0+20,0)/(10) daria erro de sintaxe, e (20.0+20.0)/(10) seria convertida para (20#+20#)/(10)


O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Share this post


Link to post
Share on other sites
jmaocubo

FreiNando é mesmo isso :cheesygrin:

Menos uma "dor de cabeça" estava com o projecto por terminar e enviar para a administração por causa desse "bug".

Muito obrigado ;)

Um abraço

Miguel

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.