- 03 Abr 2018 às 09:25
#31626
Bom dia
No código do meu "btn_calcular" tenho a instrução que após o preenchimentos dos txtbox é feita uma verificação na sheets("dados") para verificar se já há algum registro com "periodo & empresa" semelhantes, se houver algum registro com essas informações, o usuário é informado por msgbox a sobrescrever as informações já existentes ou não. Até aqui tava rodando lega, porém tive a necessidade de que os cálculos fossem feitos no vba (aplicado para todas as colunas), ao invés de utilizar fórmulas/funções dos recursos nativos do excel (economizar alguns bites!); neste calculo tenho uma condição para formatação do resultado e em seguida uma outra condição para associar um status (coluna J) a depender do "resultado" apresentado.
O cadastro tá sendo feito, mas o cálculo não está sendo feito..da erro em tempo de execução...tipos incompátiveis → sv2 = Cells(quantidade, 4) + Cells(quantidade, 5)
Quem puder dar mais essa força ai...muito obrigado meu caro!
Em anexo a planilha para verificar
No código do meu "btn_calcular" tenho a instrução que após o preenchimentos dos txtbox é feita uma verificação na sheets("dados") para verificar se já há algum registro com "periodo & empresa" semelhantes, se houver algum registro com essas informações, o usuário é informado por msgbox a sobrescrever as informações já existentes ou não. Até aqui tava rodando lega, porém tive a necessidade de que os cálculos fossem feitos no vba (aplicado para todas as colunas), ao invés de utilizar fórmulas/funções dos recursos nativos do excel (economizar alguns bites!); neste calculo tenho uma condição para formatação do resultado e em seguida uma outra condição para associar um status (coluna J) a depender do "resultado" apresentado.
O cadastro tá sendo feito, mas o cálculo não está sendo feito..da erro em tempo de execução...tipos incompátiveis → sv2 = Cells(quantidade, 4) + Cells(quantidade, 5)
Código: Selecionar todos
Dim periodo As Date
Dim ei, compras, ef, vendas As Currency
Dim linha As Integer
Dim resultado As Double
Dim novoRegistro As Boolean
Set plan = ThisWorkbook.Sheets("Dados")
Set frm = frm_estoque
quantidade = ActiveCell.Row
linha = 2
periodo = frm.txt_periodo.Text
empresa = frm.txt_empresa.Text
ei = frm.txt_ei.Text
compras = frm.txt_compras.Text
ef = frm.txt_ef.Text
vendas = frm.txt_vendas.Text
observacoes = Me.txt_observacoes.Text
novoRegistro = True
plan.Activate
plan.Range("B2").Select
quantidade = ActiveCell.Row
Do While Cells(linha, 2) & Cells(linha, 3) <> ""
busca = plan.Cells(linha, 2) & plan.Cells(linha, 3)
If busca = periodo & empresa Then
If MsgBox("Empresa " & empresa & " já cadastrado para o " & periodo & " , deseja sobrescreve-lo?!", vbYesNo) = vbYes Then
Cells(linha, 2) = periodo
Cells(linha, 3) = empresa
Cells(linha, 4) = ei
Cells(linha, 5) = compras
Cells(linha, 6) = ef
Cells(linha, 7) = vendas
Cells(linha, 11) = observacoes
novoRegistro = False
Else
novoRegistro = False
Exit Sub
End If
End If
linha = linha + 1
Loop
If novoRegistro = True Then
'Cells(linha, 1) = numeracao_automatica
Cells(linha, 2) = periodo
Cells(linha, 3) = empresa
Cells(linha, 4) = ei
Cells(linha, 5) = compras
Cells(linha, 6) = ef
Cells(linha, 7) = vendas
Cells(linha, 11) = observacoes
End If
sv1 = Cells(quantidade, 6) + Cells(quantidade, 7)
sv2 = Cells(quantidade, 4) + Cells(quantidade, 5)
resultado = (sv2 - sv1) / Cells(quantidade, 7)
If resultado = 0# Then
Cells(quantidade, 8) = Format(VBA.Round((resultado) * 1000, 2), "0.00") & "%"
Else
Cells(quantidade, 8) = Format(VBA.Round((resultado) * 100, 2), "0.00") & "%"
End If
Cells(quantidade, 8) = resultado
If resultado <= 80 Then
'80%
Cells(quantidade, 9) = "OK"
Else
Cells(quantidade, 9) = "CMV<20%"
End If
txt_resultado = Cells(quantidade, 8)
If Me.txt_periodo = "" Then
MsgBox ("Preenchimento imconpleto! Insira Período"), vbExclamation, aviso
Me.txt_periodo.SetFocus
Exit Sub
ElseIf Me.txt_empresa = "" Then
MsgBox ("Preenchimento imconpleto! Insira Empresa"), vbExclamation, aviso
Me.txt_empresa.SetFocus
Exit Sub
ElseIf Me.txt_ei = "" Then
MsgBox ("Preenchimento imconpleto! Insira EI"), vbExclamation, aviso
Me.txt_ei.SetFocus
Exit Sub
ElseIf Me.txt_compras = "" Then
MsgBox ("Preenchimento imconpleto! Insira Compras"), vbExclamation, aviso
Me.txt_compras.SetFocus
Exit Sub
ElseIf Me.txt_ef = "" Then
MsgBox ("Preenchimento imconpleto! Insira EF"), vbExclamation, aviso
Me.txt_ef.SetFocus
Exit Sub
ElseIf Me.txt_vendas = "" Then
MsgBox ("Preenchimento imconpleto! Insira Vendas"), vbExclamation, aviso
Me.txt_vendas.SetFocus
Exit Sub
End If
If MsgBox("Dados cadastrados com sucesso! Deseja realizar um novo registro?!", vbYesNo) = vbYes Then
Call UserForm_Initialize
Exit Sub
Else
Unload Me
frm_estoque.Show
End If
End Sub
Quem puder dar mais essa força ai...muito obrigado meu caro!
Em anexo a planilha para verificar
Você não está autorizado a ver ou baixar esse anexo.
Erros valem mais que acertos quando é um acerto no final 
