Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Aceitar somente dados já cadastrados
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Seg Jul 20, 2020 10:15 pm
Aceitar somente dados já cadastrados
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.
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.
-
- Manda bem
- Mensagens: 107
- Registrado em: Qua Nov 29, 2017 11:51 am
- Localização: Fortaleza - CE
Re: Aceitar somente dados já cadastrados
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?
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Seg Jul 20, 2020 10:15 pm
Re: Aceitar somente dados já cadastrados
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
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
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Seg Jul 20, 2020 10:15 pm
Re: Aceitar somente dados já cadastrados
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
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
-
- Manda bem
- Mensagens: 107
- Registrado em: Qua Nov 29, 2017 11:51 am
- Localização: Fortaleza - CE
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Seg Jul 20, 2020 10:15 pm
Re: Aceitar somente dados já cadastrados
Segue o anexo
- Anexos
-
- Pasta1 (Salvo automaticamente).rar
- (70.07 KiB) Baixado 190 vezes
-
- Manda bem
- Mensagens: 107
- Registrado em: Qua Nov 29, 2017 11:51 am
- Localização: Fortaleza - CE
Re: Aceitar somente dados já cadastrados
Bruno,
Bom dia!
Veja se é assim.
Bom dia!
Veja se é assim.
- Anexos
-
- Pasta1 (Salvo automaticamente).zip
- (66.59 KiB) Baixado 190 vezes
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Seg Jul 20, 2020 10:15 pm
Re: Aceitar somente dados já cadastrados
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
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
-
- Manda bem
- Mensagens: 107
- Registrado em: Qua Nov 29, 2017 11:51 am
- Localização: Fortaleza - CE
Re: Aceitar somente dados já cadastrados
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.
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 208 vezes
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Seg Jul 20, 2020 10:15 pm
Re: Aceitar somente dados já cadastrados
Wagner, boa noite. Cara, agora ficou perfeito.
Muito obrigado. Espero contar com sua ajuda mais adiante
Muito obrigado. Espero contar com sua ajuda mais adiante