Ir para conteúdo
Fórum Script Brasil
  • 0

Baixa e entrada em estoque excel vba


Magliano

Pergunta

Bom dia sou iniciante em excel vba por isso minha dúvida pode parecer simples:

tenho uma uma userform onde eu entro com o código ou o nome do produto e automaticamente ele me retorna o valor desse produto e criei uma textbox chamado Entrada e outro Saída.O problema é que quando entro com o código queria que ele reconhecesse na Plan1 e desse entrada ou saída de acordo com o código selecionado e copiasse na respectiva linha do código selecionado.O que está acontecendo que ele só faz a entrada e saída na primeira linha da minha tabela.

Por favor me ajudem segue o código:

Option Explicit
Dim TotalRegistro As Integer


Private Sub código_Change()
If código.ListIndex = -1 Then
Exit Sub
End If
nomepesquisa.ListIndex = -1
TotalRegistro = código.ListIndex + 2

AtualizaControles

End Sub

Private Sub CommandButton2_Click()
If código = códigoproduto Then
Estoque = Val(Range("D3").Value) + Val(Range("F3").Value)
Else
ActiveCell.Offset(1, 0).Select
End If
End Sub

Private Sub CommandButton3_Click()
If código = códigoproduto Then
Estoque = Val(Range("F3").Value) - Val(Range("E3").Value)
MsgBox ("BAIXA EFETUADA COM SUCESSO!")
ActiveCell.Offset(1, 0).Select
Else
MsgBox ("NÃO TEM NO ESTOQUE!")
End If
End Sub

Private Sub CommandButton4_Click()

Entrada = ""
Saida = ""

End Sub

Private Sub Entrada_Change()
If código = códigoproduto Then
Range("D3").Value = Entrada
Else
ActiveCell.Offset(1, 0).Select
End If
End Sub
Private Sub Saida_Change()
If código = códigoproduto Then
Range("E3").Value = Saida
Else
ActiveCell.Offset(1, 0).Select
End If
End Sub
Private Sub Estoque_Change()
If código = códigoproduto Then
Range("F3").Value = Estoque
Else
ActiveCell.Offset(1, 0).Select
End If
End Sub
Private Sub Fechar_Click()
Unload Tela
End Sub


Private Sub nomepesquisa_Change()
If nomepesquisa.ListIndex = -1 Then
Exit Sub
End If
código.ListIndex = -1

TotalRegistro = nomepesquisa.ListIndex + 2

AtualizaControles

End Sub
Sub Atualizacódigo()

With Worksheets("Plan1")

TotalRegistro = .UsedRange.Rows.Count
If TotalRegistro > 1 Then
código.Enabled = True
código.RowSource = "Plan1!A2:A" & TotalRegistro
nomepesquisa.Enabled = True
nomepesquisa.RowSource = "Plan1!B2:B" & TotalRegistro
Else
código.Enabled = False
nomepesquisa.Enabled = False
End If

End With

End Sub

Private Sub UserForm_Initialize()

Atualizacódigo

End Sub

Private Sub AtualizaControles()

With Worksheets("Plan1")

códigoproduto.Value = .Cells(TotalRegistro, 1).Value
produto.Value = .Cells(TotalRegistro, 2).Value
valor.Value = .Cells(TotalRegistro, 3).Value


End With

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Meu amigo JoséA ficou quase perfeito,só tem um pequeno detalhe que não está dando certo,é que na primeira vez que damos saida funciona normalmente,mas quando damos continuidade na saída ele dá a mensagem que não tem no estoque mesmo o produto estando disponível no estoque.E também quando digitamos um número em saída,ele aparece também na primeira linha da planilha mesmo sendo outro código selecionado.

E sem querer abusar do seu conhecimento,mas não teria uma forma de limpar as entradas e saídas da planilha também,só deixando visível o estoque ?

Essa foi a tabela modificada que você me mandou

http://www.4shared.com/document/ZV5kfYHB/T..._Sandro_1_.html

Desde já agradeço a sua ajuda

Editado por Magliano
Link para o comentário
Compartilhar em outros sites

  • 0
...dá a mensagem que não tem no estoque mesmo o produto estando disponível no estoque...

Para esse problema me parece que na comparação não estava sendo reconhecido o valor númerico, apliquei uma função de conversão.

...quando digitamos um número em saída, ele aparece também na primeira linha da planilha mesmo sendo outro código selecionado...

Isso era um código que tinha no seu arquivo original, apenas deletei agora.

...mas não teria uma forma de limpar as entradas e saídas da planilha também,só deixando visível o estoque...

Bastaria deletar essas duas linhas em Entrada e Saída, respectivamente.

Plan1.Range("D2:D65000").Item(LINHA) = Me.Entrada
e
Plan1.Range("E2:E65000").Item(LINHA) = Me.Saida

Veja se é isso...

http://www.4shared.com/document/uhT4yBBW/_..._Sandro_3_.html

Link para o comentário
Compartilhar em outros sites

  • 0

É isso mesmo JoséA obrigado pela ajuda,você foi demais meu amigo!!!

Agradeço também a esse fórum e parabenizo a todos pela iniciativa de ajudar uns aos outros!

Espero poder retribuir ao ponto que for adquirindo mais conhecimento e ajudar as pessoas que assim como eu tem dúvidas

Obrigado

Editado por Magliano
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...