Ir ao conteúdo
  • Cadastre-se
Emile Cedraz

Excel Salvar dados Userform sem selecionar a planilha onde é armazenado

Recommended Posts

Pessoal, boa noite! Sou nova no clube e me desculpem se a pergunta for repetida, mas acredito que não é.

 

Emfim, estou fazendo uma agenda médica no Excel e estou utilizando código VBA. A planilha tem uma aba ( igual aba, arquivo, página inicial, inserir...) que possui um comando de cadastrar novos clientes. Ao selecionar a USERFORM cadastro de novos clientes, a planilha de banco de dados sempre é selecionada tb. Gostaria de selecionar a USERFORM, mas ficar em qualquer planilha que eu estiver usando. Segue parte do código:

 

  Else
 
   'Verificando a quantidade de linhas usadas na planilha
   cont = Worksheets("BD").UsedRange.Rows.Count + 1
   
    'Selecionando a planilha a ser usada como banco de dados
   Worksheets("BD").Select  / Acredito ser aqui o problema, mas como fazer com que ele salve, mas não selecione a planilha?

 

A outra dúvida, nessa mesma planilha de banco de dados, gostaria que ao abrir o arquivo do excel, verifica-se a data de nascimento e se for a mesma do computador disparar uma pop up informando que é aniversario do cliente.

 

Obrigada!

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Emile Cedraz sim pode-se salvar os dados sem selecionar a planilha(aba) "BD" 

 

Agora para ajudar a ajustar o seu código tem que enviar por completo para que possamos ver os nomes dos objetos, endereços de células, colunas e intervalos. 

 

As datas de aniversário, não sabemos em que células estão essas informações para incluir no código e te passar.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Basole Entendi. Poderia me passar seu e-mail, pois posso te enviar a planilha. Acredito que entenderá melhor.

 

Private Sub btn_cad_Click()
  
  If txt_nome = "" Then
    
  'Mensagem solicitando ao usuário que digite o nome
   MsgBox "Preencha o campo com nome completo do cliente"
   txt_nome.SetFocus
  
  Else
  
  If box_sexo = "" Then
  
  'Mensagem solicitando ao usuário que digite o sexo
   MsgBox "Preencha o campo sexo"
   box_sexo.SetFocus
  
  Else
  
   If TextPlano = "" Then
  
  'Mensagem solicitando ao usuário que digite o sexo
   MsgBox "Preencha o nome do plano de saúde do cliente"
   TextPlano.SetFocus
  
  Else
  
  If txt_cpf = "" Then
  
  'Mensagem solicitando ao usuário que digite o CPF
   MsgBox "Preencha o campo CPF"
   txt_cpf.SetFocus
   
  Else
  
  If txt_nascime = "" Then
  
  'Mensagem solicitando ao usuário que digite a data de nascimento
   MsgBox "Preencha o campo data de nascimento"
   txt_nascime.SetFocus
   
   
  Else
  
  If txt_ender = "" Then
  
  'Mensagem solicitando ao usuário que digite o endereço
   MsgBox "Preencha o campo endereço"
   txt_ender.SetFocus
   
  Else
  
  If txt_numer = "" Then
  
  'Mensagem solicitando ao usuário que digite o numero
   MsgBox "Preencha o campo numero"
   txt_numer.SetFocus
   
  Else
  
    If txt_bairro = "" Then
  
  'Mensagem solicitando ao usuário que digite o Bairro
   MsgBox "Preencha o campo bairro"
   txt_bairro.SetFocus
   
   
  Else
  
    If txt_muni = "" Then
  
  'Mensagem solicitando ao usuário que digite o municipio
   MsgBox "Preencha o campo municipio"
   txt_muni.SetFocus
   
  Else
  
  
  If txt_comple = "" Then
  
  'Mensagem solicitando ao usuário que digite o complemento
   MsgBox "Preencha o campo complemento"
   txt_comple.SetFocus
   
  Else
  
  
  If txt_telef = "" Then
  
  'Mensagem solicitando ao usuário que digite o telefone
   MsgBox "Preencha o campo telefone"
   txt_telef.SetFocus
   
  Else
  
  If txt_cel = "" Then
  
  'Mensagem solicitando ao usuário que digite o celular
   MsgBox "Preencha o campo celular"
   txt_cel.SetFocus
   
  Else
  
  If txt_email = "" Then
  
  'Mensagem solicitando ao usuário que digite o email
   MsgBox "Preencha o campo e-mail"
   txt_email.SetFocus
   
  Else
  
   If txt_cad_em = "" Then
  
  'Mensagem solicitando ao usuário que digite a data de cadastrado
   MsgBox "Preencha uma data no campo Cadastrado em"
   txt_cad_em.SetFocus

   Else
   
  
   If ComboBoxOperador = "" Then
  
  'Mensagem solicitando ao usuário que selecione o operador
   MsgBox "Selecione o operador que realizou o cadastro do cliente"
   ComboBoxOperador.SetFocus

   Else
 
   'Verificando a quantidade de linhas usadas na planilha
   cont = Worksheets("BD").UsedRange.Rows.Count + 1
   
    'Selecionando a planilha a ser usada como banco de dados


   Worksheets("BD").Select
  
   'Armazenando na planilha os dados inseridos pelo usuário
   Cells(cont, 1) = txt_nome
   Cells(cont, 2) = box_sexo
   Cells(cont, 3) = TextPlano
   Cells(cont, 4) = txt_cpf
   Cells(cont, 5) = txt_nascime
   Cells(cont, 6) = txt_ender
   Cells(cont, 7) = txt_numer
   Cells(cont, 8) = txt_bairro
   Cells(cont, 9) = txt_muni
   Cells(cont, 10) = txt_comple
   Cells(cont, 11) = txt_telef
   Cells(cont, 12) = txt_cel
   Cells(cont, 13) = txt_email
   Cells(cont, 14) = txt_cad_em
   Cells(cont, 15) = ComboBoxOperador
   Cells(cont, 16) = obs
      
   'Limpando os campos após o cadastro
   txt_nome = ""
   box_sexo = ""
   TextPlano = ""
   txt_cpf = ""
   txt_nascime = ""
   txt_ender = ""
   txt_numer = ""
   txt_bairro = ""
   txt_muni = ""
   txt_comple = ""
   txt_telef = ""
   txt_cel = ""
   txt_email = ""
   txt_cad_em = ""
   ComboBoxOperador = ""
   obs = ""
   
   'Mensagem de gravação concluída
   MsgBox "Cliente cadastrado com sucesso"
   
   'Colocando o cursor na caixa nome
   txt_nome.SetFocus
   
   'Comando para salvar a planilha
   ActiveWorkbook.Save
   
   End If

   End If
   End If
   End If
   End If
   End If
   End If
   End If
   End If
   End If
   End If
   End If
   End If
   End If
   End If
   
   
End Sub

 

 

 

Acredito que a parte que coloquei em negrito é a que sempre seleciona a planilha. Esse comando "cad" é de cadastrar. O arquivo em questão tem duas planilhas, a "BD" e "Agenda". Se eu estiver na planilha agenda e selecionar o formulario de cadastro, automaticamente vai para a planilha BD, queria que salva-se sem sair da planilha que eu estiver. Os aniversários estão na planilha BD também. Estão na célula E3, na verdade começam nela e vai até o final. Obrigada pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Emile Cedraz com essas alterações agora ao cadastrar planilha (aba) "BD", não será mais selecionada, a não ser que já esteja ativa.

Segue somente o trecho do código alterado.

With Worksheets("BD") '.Select
    
    'Armazenando na planilha os dados inseridos pelo usuário
    .Cells(cont, 1) = txt_nome
    .Cells(cont, 2) = box_sexo
    .Cells(cont, 3) = TextPlano
    .Cells(cont, 4) = txt_cpf
    .Cells(cont, 5) = txt_nascime
    .Cells(cont, 6) = txt_ender
    .Cells(cont, 7) = txt_numer
    .Cells(cont, 8) = txt_bairro
    .Cells(cont, 9) = txt_muni
    .Cells(cont, 10) = txt_comple
    .Cells(cont, 11) = txt_telef
    .Cells(cont, 12) = txt_cel
    .Cells(cont, 13) = txt_email
    .Cells(cont, 14) = txt_cad_em
    .Cells(cont, 15) = ComboBoxOperador
    .Cells(cont, 16) = obs
    
    End With

A questão dos aniversariantes, na abertura do arquivo, a macro faz uma varredura na coluna (5 - E - nascime...), e verifica o dia e o mês e compara com data do dia, se forem iguais mostra uma mensagem com o nome de todos os aniversariantes.

 

Copie e cole o código no vbe de EstaPasta_de_trabalho:

 

senhaexcel2003.jpg     

 

Private Sub Workbook_Open()
    Dim rng As Range
    Dim LR!
    Dim msg As String
    
    On Error Resume Next
    
    With ThisWorkbook
        .Activate
        On Error GoTo 0
        
        With .Sheets("BD")
            
            LR = .Cells(.Rows.Count, 1).End(xlUp).Row
            
            For Each rng In .Range("E3:E" & LR)
            
                If IsDate(rng.Value) Then
                    If VBA.Day(rng.Value) + VBA.Month(rng.Value) = VBA.Day(Date) + VBA.Month(Date) Then
                End If
                    msg = msg & "Hoje é aniversário de " & rng.Offset(, -4).Value & VBA.vbCr
                End If
                
            Next
            
          If msg <> "" Then MsgBox msg, 0, "Aniversariantes do Dia"
            
        End With
    End With
    
End Sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui pra mim deu certinho.

Vou postar o código todo:

Spoiler

Private Sub btn_cad_Click()
    
    If txt_nome = "" Then
        
        'Mensagem solicitando ao usuário que digite o nome
        MsgBox "Preencha o campo com nome completo do cliente"
        txt_nome.SetFocus
        
    Else
        
        If box_sexo = "" Then
            
            'Mensagem solicitando ao usuário que digite o sexo
            MsgBox "Preencha o campo sexo"
            box_sexo.SetFocus
            
            
        Else
            
            If TextPlano = "" Then
                
                'Mensagem solicitando ao usuário que digite o sexo
                MsgBox "Preencha o nome do plano de saúde do cliente"
                TextPlano.SetFocus
                
                
            Else
                
                If txt_cpf = "" Then
                    
                    'Mensagem solicitando ao usuário que digite o CPF
                    MsgBox "Preencha o campo CPF"
                    txt_cpf.SetFocus
                    
                Else
                    
                    If txt_nascime = "" Then
                        
                        'Mensagem solicitando ao usuário que digite a data de nascimento
                        MsgBox "Preencha o campo data de nascimento"
                        txt_nascime.SetFocus
                        
                        
                    Else
                        
                        If txt_ender = "" Then
                            
                            'Mensagem solicitando ao usuário que digite o endereço
                            MsgBox "Preencha o campo endereço"
                            txt_ender.SetFocus
                            
                        Else
                            
                            If txt_numer = "" Then
                                
                                'Mensagem solicitando ao usuário que digite o numero
                                MsgBox "Preencha o campo numero"
                                txt_numer.SetFocus
                                
                            Else
                                
                                If txt_bairro = "" Then
                                    
                                    'Mensagem solicitando ao usuário que digite o Bairro
                                    MsgBox "Preencha o campo bairro"
                                    txt_bairro.SetFocus
                                    
                                    
                                Else
                                    
                                    If txt_muni = "" Then
                                        
                                        'Mensagem solicitando ao usuário que digite o municipio
                                        MsgBox "Preencha o campo municipio"
                                        txt_muni.SetFocus
                                        
                                    Else
                                        
                                        
                                        If txt_comple = "" Then
                                            
                                            'Mensagem solicitando ao usuário que digite o complemento
                                            MsgBox "Preencha o campo complemento"
                                            txt_comple.SetFocus
                                            
                                        Else
                                            
                                            
                                            If txt_telef = "" Then
                                                
                                                'Mensagem solicitando ao usuário que digite o telefone
                                                MsgBox "Preencha o campo telefone"
                                                txt_telef.SetFocus
                                                
                                            Else
                                                
                                                If txt_cel = "" Then
                                                    
                                                    'Mensagem solicitando ao usuário que digite o celular
                                                    MsgBox "Preencha o campo celular"
                                                    txt_cel.SetFocus
                                                    
                                                Else
                                                    
                                                    If txt_email = "" Then
                                                        
                                                        'Mensagem solicitando ao usuário que digite o email
                                                        MsgBox "Preencha o campo e-mail"
                                                        txt_email.SetFocus
                                                        
                                                    Else
                                                        
                                                        If txt_cad_em = "" Then
                                                            
                                                            'Mensagem solicitando ao usuário que digite a data de cadastrado
                                                            MsgBox "Preencha uma data no campo Cadastrado em"
                                                            txt_cad_em.SetFocus
                                                            
                                                        Else
                                                            
                                                            
                                                            If ComboBoxOperador = "" Then
                                                                
                                                                'Mensagem solicitando ao usuário que selecione o operador
                                                                MsgBox "Selecione o operador que realizou o cadastro do cliente"
                                                                ComboBoxOperador.SetFocus
                                                                
                                                            Else
                                                                
                                                                'Verificando a quantidade de linhas usadas na planilha
                                                                cont = Worksheets("BD").UsedRange.Rows.Count + 1
                                                                
                                                                
                                                                
                                                                With Worksheets("BD")
                                                                    
                                                                    'Armazenando na planilha os dados inseridos pelo usuário
                                                                    .Cells(cont, 1) = txt_nome
                                                                    .Cells(cont, 2) = box_sexo
                                                                    .Cells(cont, 3) = TextPlano
                                                                    .Cells(cont, 4) = txt_cpf
                                                                    .Cells(cont, 5) = txt_nascime
                                                                    .Cells(cont, 6) = txt_ender
                                                                    .Cells(cont, 7) = txt_numer
                                                                    .Cells(cont, 8) = txt_bairro
                                                                    .Cells(cont, 9) = txt_muni
                                                                    .Cells(cont, 10) = txt_comple
                                                                    .Cells(cont, 11) = txt_telef
                                                                    .Cells(cont, 12) = txt_cel
                                                                    .Cells(cont, 13) = txt_email
                                                                    .Cells(cont, 14) = txt_cad_em
                                                                    .Cells(cont, 15) = ComboBoxOperador
                                                                    .Cells(cont, 16) = obs
                                                                    
                                                                End With
                                                                
                                                                'Limpando os campos após o cadastro
                                                                txt_nome = ""
                                                                box_sexo = ""
                                                                TextPlano = ""
                                                                txt_cpf = ""
                                                                txt_nascime = ""
                                                                txt_ender = ""
                                                                txt_numer = ""
                                                                txt_bairro = ""
                                                                txt_muni = ""
                                                                txt_comple = ""
                                                                txt_telef = ""
                                                                txt_cel = ""
                                                                txt_email = ""
                                                                txt_cad_em = ""
                                                                ComboBoxOperador = ""
                                                                obs = ""
                                                                
                                                                
                                                                'Mensagem de gravação concluída
                                                                MsgBox "Cliente Physios cadastrado com sucesso"
                                                                
                                                                'Colocando o cursor na caixa nome
                                                                txt_nome.SetFocus
                                                                
                                                                'Comando para salvar a planilha
                                                                ActiveWorkbook.Save
                                                                
                                                                
                                                                
                                                            End If
                                                        End If
                                                    End If
                                                End If
                                            End If
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If
    
    
End Sub

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postei o código todo de cadastrar, que voce disse que não estava dando certo. 

 

Verifique e de o retorno.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×