VALORES NEGATIVOS VBA
Ola pessoal,
sou novo em vba e estou enfrentando um probleminha, estou desenvolvendo um sistema que vai basicamente pegar os valores mensais e somalos, só que ao digitar valores negativos (-) aparece uma mensagem de erro (13- tipos incopativeis).
Sera que alguem poderia me ajudar.
Obrigado
sou novo em vba e estou enfrentando um probleminha, estou desenvolvendo um sistema que vai basicamente pegar os valores mensais e somalos, só que ao digitar valores negativos (-) aparece uma mensagem de erro (13- tipos incopativeis).
Sera que alguem poderia me ajudar.
Obrigado
Existe alguma variável que está tentando instanciar um valor negativo e seu tipo de dados não permite isso...
é um Double.
Double não permite isso, que variável permite?
Ta aki a função
Function CheckValor()
Dim m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12 As Double
Dim t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 As String
Dim s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12 As String
Dim r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12 As Double
Dim line As Double
line = Novo_Indicador_UF.cod
s1 = BD.Cells(line, 130).Text
s2 = BD.Cells(line, 146).Text
s3 = BD.Cells(line, 162).Text
s4 = BD.Cells(line, 178).Text
s5 = BD.Cells(line, 194).Text
s6 = BD.Cells(line, 210).Text
s7 = BD.Cells(line, 226).Text
s8 = BD.Cells(line, 242).Text
s9 = BD.Cells(line, 258).Text
s10 = BD.Cells(line, 274).Text
s11 = BD.Cells(line, 290).Text
s12 = BD.Cells(line, 306).Text
m1 = CDbl(s1)
m2 = CDbl(s2)
m3 = CDbl(s3)
m4 = CDbl(s4)
m5 = CDbl(s5)
m6 = CDbl(s6)
m7 = CDbl(s7)
m8 = CDbl(s8)
m9 = CDbl(s9)
m10 = CDbl(s10)
m11 = CDbl(s11)
m12 = CDbl(s12)
t1 = (m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + m12)
t2 = (m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11)
t3 = (m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10)
t4 = (m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9)
t5 = (m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8)
t6 = (m1 + m2 + m3 + m4 + m5 + m6 + m7)
t7 = (m1 + m2 + m3 + m4 + m5 + m6)
t8 = (m1 + m2 + m3 + m4 + m5)
t9 = (m1 + m2 + m3 + m4)
t10 = (m1 + m2 + m3)
t11 = (m1 + m2)
t12 = (m1)
BD.Cells(line, 131).Value = t12
BD.Cells(line, 147).Value = t11
BD.Cells(line, 163).Value = t10
BD.Cells(line, 179).Value = t9
BD.Cells(line, 195).Value = t8
BD.Cells(line, 211).Value = t7
BD.Cells(line, 227).Value = t6
BD.Cells(line, 243).Value = t5
BD.Cells(line, 259).Value = t4
BD.Cells(line, 275).Value = t3
BD.Cells(line, 291).Value = t2
BD.Cells(line, 307).Value = t1
txt_Valor_Acumulado_1.Value = t12
txt_Valor_Acumulado_2.Value = t11
txt_Valor_Acumulado_3.Value = t10
txt_Valor_Acumulado_4.Value = t9
txt_Valor_Acumulado_5.Value = t8
txt_Valor_Acumulado_6.Value = t7
txt_Valor_Acumulado_7.Value = t6
txt_Valor_Acumulado_8.Value = t5
txt_Valor_Acumulado_9.Value = t4
txt_Valor_Acumulado_10.Value = t3
txt_Valor_Acumulado_11.Value = t2
txt_Valor_Acumulado_12.Value = t1
txt_Valor_Acumulado_13.Value = t1
Double não permite isso, que variável permite?
Ta aki a função
Function CheckValor()
Dim m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12 As Double
Dim t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 As String
Dim s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12 As String
Dim r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12 As Double
Dim line As Double
line = Novo_Indicador_UF.cod
s1 = BD.Cells(line, 130).Text
s2 = BD.Cells(line, 146).Text
s3 = BD.Cells(line, 162).Text
s4 = BD.Cells(line, 178).Text
s5 = BD.Cells(line, 194).Text
s6 = BD.Cells(line, 210).Text
s7 = BD.Cells(line, 226).Text
s8 = BD.Cells(line, 242).Text
s9 = BD.Cells(line, 258).Text
s10 = BD.Cells(line, 274).Text
s11 = BD.Cells(line, 290).Text
s12 = BD.Cells(line, 306).Text
m1 = CDbl(s1)
m2 = CDbl(s2)
m3 = CDbl(s3)
m4 = CDbl(s4)
m5 = CDbl(s5)
m6 = CDbl(s6)
m7 = CDbl(s7)
m8 = CDbl(s8)
m9 = CDbl(s9)
m10 = CDbl(s10)
m11 = CDbl(s11)
m12 = CDbl(s12)
t1 = (m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + m12)
t2 = (m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11)
t3 = (m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10)
t4 = (m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9)
t5 = (m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8)
t6 = (m1 + m2 + m3 + m4 + m5 + m6 + m7)
t7 = (m1 + m2 + m3 + m4 + m5 + m6)
t8 = (m1 + m2 + m3 + m4 + m5)
t9 = (m1 + m2 + m3 + m4)
t10 = (m1 + m2 + m3)
t11 = (m1 + m2)
t12 = (m1)
BD.Cells(line, 131).Value = t12
BD.Cells(line, 147).Value = t11
BD.Cells(line, 163).Value = t10
BD.Cells(line, 179).Value = t9
BD.Cells(line, 195).Value = t8
BD.Cells(line, 211).Value = t7
BD.Cells(line, 227).Value = t6
BD.Cells(line, 243).Value = t5
BD.Cells(line, 259).Value = t4
BD.Cells(line, 275).Value = t3
BD.Cells(line, 291).Value = t2
BD.Cells(line, 307).Value = t1
txt_Valor_Acumulado_1.Value = t12
txt_Valor_Acumulado_2.Value = t11
txt_Valor_Acumulado_3.Value = t10
txt_Valor_Acumulado_4.Value = t9
txt_Valor_Acumulado_5.Value = t8
txt_Valor_Acumulado_6.Value = t7
txt_Valor_Acumulado_7.Value = t6
txt_Valor_Acumulado_8.Value = t5
txt_Valor_Acumulado_9.Value = t4
txt_Valor_Acumulado_10.Value = t3
txt_Valor_Acumulado_11.Value = t2
txt_Valor_Acumulado_12.Value = t1
txt_Valor_Acumulado_13.Value = t1
Daniel, poste seu código para melhor interpretação.
Dim m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12 As Double
Dim r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12 As Double
As linhas acima, ao contrário do que possa parecer, não criam 12 variáveis double, mas sim, uma(a última) double e todas as outras como [Ô]variant[Ô]
Além disso, esse código dá pra [Ô]enxugar[Ô] muito, está bastante mal-formulado, para uma lógica simples de iniciante está ok, vai funcionar, mas tem que pensar na legibilidade dele...
Dim r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12 As Double
As linhas acima, ao contrário do que possa parecer, não criam 12 variáveis double, mas sim, uma(a última) double e todas as outras como [Ô]variant[Ô]
Além disso, esse código dá pra [Ô]enxugar[Ô] muito, está bastante mal-formulado, para uma lógica simples de iniciante está ok, vai funcionar, mas tem que pensar na legibilidade dele...
então me sugira alguma coisa melhor por favor.
Alguem por favor poderia me dizar o porque que quando eu digito ( - ), da erro 13 tipos incopativeis?
colega posta uma exemplo que gera o erro, quando vc digita este menos?
Eu ja postei acima Marcelo.
Tenho um TextBox e quando eu vou digitar um valor negativo nele, só de colocar o - o código (acima) ja da erro de tipos incopativeis.
Tenho um TextBox e quando eu vou digitar um valor negativo nele, só de colocar o - o código (acima) ja da erro de tipos incopativeis.
bom vamos ver como o KERPLUNK disse somente a ultima variavel [ô]m[ô] foi declarada como double
então peço permissão pra fazer uma pequena alteração, vamos
eu fiz esta modificação acima, teste, tomara que funcione
então peço permissão pra fazer uma pequena alteração, vamos
Dim m(1 to 12) As Double
Dim t(1 to 12) As Double
Dim s(1 to 12) As Double
Dim r(1 to 12) As Double
Dim line As Double, Coluna As Integer
Coluna = 130
line = Novo_Indicador_UF.cod
For A = 1 To 12
s(A) = CDbl(BD.Cells(line, Coluna).Text)
Coluna = Coluna + 16
Next A
For A = 1 To 12
m(A) = S(A)
Next A
Dim SB As Integer
SB = 12
For A = 1 To 12
For B = 1 To SB
t(A) = t(A) + m(B)
Next B
SB = SB - 1
Next A
Dim Coluna2 As Integer
Coluna2 = 131
For A = 12 To 1 Step -1
BD.Cells(line, Coluna2).Value = t(A)
Coluna2 = Coluna2 + 16
Next A
txt_Valor_Acumulado_1.Value = t(12)
txt_Valor_Acumulado_2.Value = t(11)
txt_Valor_Acumulado_3.Value = t(10)
txt_Valor_Acumulado_4.Value = t(9)
txt_Valor_Acumulado_5.Value = t(8)
txt_Valor_Acumulado_6.Value = t(7)
txt_Valor_Acumulado_7.Value = t(6)
txt_Valor_Acumulado_8.Value = t(5)
txt_Valor_Acumulado_9.Value = t(4)
txt_Valor_Acumulado_10.Value = t(3)
txt_Valor_Acumulado_11.Value = t(2)
txt_Valor_Acumulado_12.Value = t(1)
txt_Valor_Acumulado_13.Value = t(1)
eu fiz esta modificação acima, teste, tomara que funcione
Nossa, Marcelo muito obrigado mesmo, funcionou perfeitamente.
Se você tivesse perto eu te dava um beijo.. hahaha.. Obrigado.
Se você tivesse perto eu te dava um beijo.. hahaha.. Obrigado.
Tópico encerrado , respostas não são mais permitidas