Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Aceitar somente dados já cadastrados

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Bruno_Henrique
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Seg Jul 20, 2020 10:15 pm

Aceitar somente dados já cadastrados

Mensagem por Bruno_Henrique »

Olá, amigos.

Tenho um problema que gostaria que me ajudassem. Eu estou fazendo um controle de estoque usando o vba. O meu problema é que construí dois forms. O primeiro, form1, seria o cadastro dos produtos como entrada e o outro, form2, eu separei para anexa esse produto a um segmento. Ou seja, quando eu for acessar o form2 e digitar um produto o aplicativo procure na tabela (plan1) onde foi cadastrado anteriormente pelo form1 (o form1 e o cadastro do produto está funcionando) e aceite somente estes dados cadastrados e salve em outra planilha (plan2). tentei usar o While, mas não consegui dar fim, mas acho que esse seria o caminho.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Wagner Morel
Manda bem
Manda bem
Mensagens: 107
Registrado em: Qua Nov 29, 2017 11:51 am
Localização: Fortaleza - CE

Re: Aceitar somente dados já cadastrados

Mensagem por Wagner Morel »

Anexe seu arquivo aqui no fórum e explique melhor o que quer. Você quer que o form2 apenas exiba os dados que já estão na Plan1 (salvos pelo form1)? É isso? Vai acrescentar mais alguns dados nesse form2 e após isso desejar salvar os dados na Plan2?


Bruno_Henrique
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Seg Jul 20, 2020 10:15 pm

Re: Aceitar somente dados já cadastrados

Mensagem por Bruno_Henrique »

Gostaria que ao digitar um código de um produto no form2, o vba só aceitasse aquele código que já foi cadastrado no Form1.

Tenho duas planilhas:
Tabela Entrada: pelo form1 eu cadastros os código do produto do fornecedor

Tabela Cadastro: seria a etapa 2. Np Form2, em um TextBox ao digitar um código o sistema tem que pesquisar na tabela entrada, se este código existe. Se existir deixar salvar na tabela Cadastro, caso contrario não deixar salvar


Bruno_Henrique
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Seg Jul 20, 2020 10:15 pm

Re: Aceitar somente dados já cadastrados

Mensagem por Bruno_Henrique »

Esse seria meu Form de Cadastro:
Private Sub btnSalvar_Click()

If txtCod.Text = "" Or CbModelo.Text = "" Or CbFuncionario.Text = "" Or CbFuncionario.Text = "" Then
MsgBox "Todos os campos devem ser preenchidos!", vbCritical, "ERRO"
Exit Sub
End If

Planilha1.Activate
Planilha1.Range("B5").Select

Dim ver As Double
ver = WorksheetFunction.CountIf(Planilha1.Range("B:B"), txtCod)
If ver > 0 Then
MsgBox " já Cadastrado!", vbCritical, "Código"
Exit Sub
End If

Call Registrar

End Sub

Private Sub UserForm_Initialize()
CbModelo.AddItem "X500"
CbModelo.AddItem "VTEC"

CBFornecedor.AddItem "A"
CBFornecedor.AddItem "P"
CBFornecedor.AddItem "X"

CbFuncionario.AddItem "O"
CbFuncionario.AddItem "E"
CbFuncionario.AddItem "S"
CbFuncionario.AddItem "F"



Set dpFrom = New DateTimePicker
With dpFrom
.Add ComboBox1
.Create Me, "dd/mmm/yyyy", _
BackColor:=&H125FFFF, _
TitleBack:=&H808000, _
Trailing:=&H99FFFF, _
TitleFore:=&HFFFFFF
End With
End Sub

Sub Vazio()

Do

If Not (IsEmpty(ActiveCell)) Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell) = True

End Sub

Sub Registrar()

Planilha1.Select

Call Vazio


Dim cod As String
cod = txtCod


ActiveCell.Value = cod
ActiveCell.Offset(0, 1).Value = CbModelo.Value
ActiveCell.Offset(0, 2).Value = dpFrom.Value
ActiveCell.Offset(0, 3).Value = CBFornecedor.Value
ActiveCell.Offset(0, 4).Value = CbFuncionario.Value

MsgBox "Salvo com Sucesso!", vbInformation, "REGISTRO"

txtCod = ""
CbModelo = ""
CBFornecedor = ""
CbFuncionario = ""

End Sub


Esse seira meu Form2, onde eu salvaria somente se o cod do produto existe na tabela Entrada


Private Sub btnSalvar_Click()
If Cbocarro.Text = "" Or TxtCod2.Text = "" Or CbModelo2.Text = "" Or CbFuncionario2.Text = "" Then
MsgBox "Todos os campos devem ser preenchidos!", vbCritical, "ERRO"
Exit Sub
End If

Planilha3.Activate
Planilha3.Range("C5").Select


Dim ver As Double
ver = WorksheetFunction.CountIf(Planilha3.Range("C:C"), TxtCod2)
If ver > 0 Then
MsgBox "Módulo já Cadastrado!", vbCritical, "Código"
Exit Sub
End If

Call Alocar



End Sub

Private Sub UserForm_Initialize()
FormCad.Hide
CbModelo2.AddItem "X500"
CbModelo2.AddItem "VTEC"


CbFuncionario2.AddItem ""
CbFuncionario2.AddItem "E"
CbFuncionario2.AddItem "S"
CbFuncionario2.AddItem "F"

Set dpFrom1 = New DateTimePicker
With dpFrom1
.Add ComboBox2
.Create Me, "dd/mmm/yyyy", _
BackColor:=&H125FFFF, _
TitleBack:=&H808000, _
Trailing:=&H99FFFF, _
TitleFore:=&HFFFFFF
End With

Dim carro As Integer

carro = Range("Carros!B4").End(xlDown).Row

Cbocarro.RowSource = "Carros!B4:B" & carro


End Sub

Sub Vazio2()

Do

If Not (IsEmpty(ActiveCell)) Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell) = True

End Sub
Sub Alocar()

Planilha3.Select

Call Vazio2

Dim cod_Alocar As String
cod_Alocar = TxtCod2


ActiveCell.Value = cod_Alocar
ActiveCell.Offset(0, -1).Value = Cbocarro.Value
ActiveCell.Offset(0, 1).Value = CbModelo2.Value
ActiveCell.Offset(0, 2).Value = dpFrom1.Value
ActiveCell.Offset(0, 3).Value = CbFuncionario2.Value


TxtCod2 = ""
CbModelo2 = ""
CbFuncionario2 = ""

End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Wagner Morel
Manda bem
Manda bem
Mensagens: 107
Registrado em: Qua Nov 29, 2017 11:51 am
Localização: Fortaleza - CE

Re: Aceitar somente dados já cadastrados

Mensagem por Wagner Morel »

Anexe seu arquivo.


Bruno_Henrique
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Seg Jul 20, 2020 10:15 pm

Re: Aceitar somente dados já cadastrados

Mensagem por Bruno_Henrique »

Segue o anexo
Anexos
Pasta1 (Salvo automaticamente).rar
(70.07 KiB) Baixado 171 vezes


Wagner Morel
Manda bem
Manda bem
Mensagens: 107
Registrado em: Qua Nov 29, 2017 11:51 am
Localização: Fortaleza - CE

Re: Aceitar somente dados já cadastrados

Mensagem por Wagner Morel »

Bruno,

Bom dia!

Veja se é assim.
Anexos
Pasta1 (Salvo automaticamente).zip
(66.59 KiB) Baixado 172 vezes


Bruno_Henrique
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Seg Jul 20, 2020 10:15 pm

Re: Aceitar somente dados já cadastrados

Mensagem por Bruno_Henrique »

Boa Noite, Wagner.

No caso quando eu for colocar um id de um módulo no FormAlocar1 no campo TxtCod2, o sistema busca se esse id já está na tabela Entrada. Se o id já estiver na Tabela entrada ele aceita e adiciona esse mesmo id na tabela alocar. Caso contrario, ele me avida que esse id não foi cadastrado e não aceita que eu adicione na tabela alocar


Wagner Morel
Manda bem
Manda bem
Mensagens: 107
Registrado em: Qua Nov 29, 2017 11:51 am
Localização: Fortaleza - CE

Re: Aceitar somente dados já cadastrados

Mensagem por Wagner Morel »

Ok. Acho que eu havia entendido o contrário. Veja se é assim.

OBS. Não mexi na sua rotina Alocar que já estava pronta. Apenas coloquei ela no local certo.
Anexos
Pasta1 (Salvo automaticamente).zip
(62.92 KiB) Baixado 186 vezes


Bruno_Henrique
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Seg Jul 20, 2020 10:15 pm

Re: Aceitar somente dados já cadastrados

Mensagem por Bruno_Henrique »

Wagner, boa noite. Cara, agora ficou perfeito.

Muito obrigado. Espero contar com sua ajuda mais adiante ;)


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder