Saberexcel - Site de quem precisa aprender Macros Microsoft Excel VBA
EXCEL VBA COMO MONTAR UM PROCEDIMENTO PARA FORMAÇÃO DE PREÇOS DE CUSTO - VBA
Esse a macro do procedimento do Aplicativo Microsoft Excel VBA(Visual Basic Application), o ajudará na formação de preço de venda de determinado produto incluindo o Custo da Mão de Obra. Obseve que é bem simples, no exemplo simulei uma fórmula que poderá simplificar e faciliar o entendimento do Procedimento(VBA). Observe que aqui usei uma WorksheetFunction(Função de Planilha) para retornar determinados valores,
como podem ver as WorksheetFunctions(Funções de Planilhas) são muito útil no retorno de dados.
Quando alterar o preço ou os Coeficientes, atualizará todos os valores na tabela
wkf WorksheetFunction funções de planilhas retornam valores vba
CALCULANDO O PREÇO DE CUSTO DE PRODUTO + MÃO DE OBRA
P.B.C.........................: - Preço Básico de Custo
P.V.U.........................: - Preço Venda Unidade
M.O ..........................: -0,58 - também um coeficiente usado para determinar o valor da Mão Obra.
Coeficiente.................: 1,87 - determinará o lucro bruto
Preço por hora(MO).....: 30,57 - determina o valor da Mão de Obra
(*) observe que ao mudar o valor do coeficiente atualiza todos valores na tabela.
- Calcular o preço venda com base no (PBC)
- Macro(VBA) calcula
- Cálculo realizado...: (P.B.C *Coeficiente)+(MO*Preço hora)
Cálculo realizado pelo procedimento..:
EX: 3,87 x 1,87 = 7,24
(7,24 + (0,58*30,57) = 24,97
Cálculos serão atualizados automaticamente quando for mudado o preço básico de custo, P.B.C., ou Coeficiente
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
On Error Resume Next
'caso você delete alguma coisa,trata erro em tempo de execução.
'se ocorrer modificações no intervalo de células (D3:D65536)
If Not Intersect(Target, Range("D3:D65536")) Is Nothing Then
Target.Offset(0, 1).Value = _
Application.WorksheetFunction.Sum(Target.Value * Range("G2") + Target.Offset(0, 2) * Range("H2"))
'Se Celula(Coluna(D) for limpo, Celula(Coluna(E)) também é apagada e considerado fora do processo
If Target.Value = "" Then Target.Offset(0, 1).Value = ""
End If
'Se ocorrer alguma modidifcação no intervalo nas células G2 ou H2
If Not Intersect(Target, Range("G2:H2")) Is Nothing Then
For i = 3 To Range("D65536").End(xlUp).Row
Cells(i, 5).Value = _
Application.WorksheetFunction.Sum(Cells(i, 4).Value * Range("G2") + Cells(i, 6).Value * Range("H2"))
Next
End If
End Sub
'eu sofro também veja a primeira tentativa...rs...
'Option Explicit
'Private Sub Worksheet_Change(ByVal Target As Range)
'Dim c As Range
'localizando a última célula se não localizar não tem jeito não é?
'Set c = Range("D2:D" & Range("D65536").End(xlUp).Row)
'se ocorrer modificações no intervalo de células (D3:D65536)
'If Intersect(Target, Range("D3:D65536")) Is Nothing Then Exit Sub
' Target.Offset(0, 1).Value = Application.WorksheetFunction.Sum(Target.Value * Range("G2") + Target.Offset(0, 2) * Range("H2"))
' 'Se col(D) for limpo, Col(E) também é apagado e considerado fora do processo
' If Target.Value = "" Then Target.Offset(0, 1).Value = ""
' Exit Sub
'End If
'End Sub
Aprenda tudo sobre planilhas do Aplicativo Microsoft Excel VBA(Visual Basic Application), sozinho, com baixo custo, praticando com os produtos didáticos Saberexcel
Baixe o exemplo de planilha contendo o procedimento acima.
Excel vba calculo calcular o preco de venda mais mao de obra (235.01 KB)