jmaocubo Posted April 3, 2012 Report Share Posted April 3, 2012 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, 😛 Obrigado Miguel Link to comment Share on other sites More sharing options...
FreiNando Posted April 3, 2012 Report Share Posted April 3, 2012 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 Link to comment Share on other sites More sharing options...
jmaocubo Posted April 6, 2012 Author Report Share Posted April 6, 2012 FreiNando é mesmo isso 😁 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 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now