none
Preencher textbox automático - Cadastro de ordem de serviço RRS feed

  • Pergunta

  • Olá Pessoal. Tudo bem?

    Preciso de um Help. Fiz um UserForm para registro de chamados e nele consta o Nº do chamado com uma textbox. Gostaria que toda vez que eu abrisse o UserForm, o textBox já preencha automaticamente com um número de chamado que não existe ainda, ou seja, se eu tenho 10 chamados, cada um esta nomeado com um valor unitário de 1 a 10. Ao abrir o UserForm para cadastrar o novo chamado, quero que o textbox preencha com o Número do chamado 11 automaticamente.

    Fico no aguardo

    quarta-feira, 22 de fevereiro de 2017 17:28

Todas as Respostas

  • Olá renan_p

    Esta informação referente ao próximo número de cachamado está no banco de dados?

    Se for você precisa criar uma query que busque este número cada vez que você chamar este UserForm!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    quarta-feira, 22 de fevereiro de 2017 18:13
  • Olá Daniel. Obrigado pela resposta.

    Na vdd esses números não estão em um banco de dados paralelo. A ideia seria esse número de chamado ser preenchido de acordo com a lista do chamado anterior. Ou seja, se eu já fiz 10 chamados, o último número de chamado da lista é 10. Então, quando abrir o próximo chamado, este seria preenchido com 10+1, sem ter que buscar de um banco de dados paralelo, entende? Será que isso é possível?

    quarta-feira, 22 de fevereiro de 2017 18:37
  • renan_p

    Possivel é sim o grande problema é se por acaso existir concorrencia de informação por exemplo 2 máquinas faz acesso a esta tela as 2 vão pegar a informação (10+1) então você terá problema! Se você garantir que o sistema será mono usuário ai não terá problemas!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    quarta-feira, 22 de fevereiro de 2017 18:42
  • Sim! o sistema é mono usuário mesmo! Mas Também é fácil criar um banco de dados com a sequência de números. Então, nesse caso, qual seria a solução mais fácil?

    Obrigado

     
    quarta-feira, 22 de fevereiro de 2017 18:58
  • Criar uma tabela e deixar a sequencia nela não é nada complicado!

    Pelo que entendi você já esta conseguindo inserir outras informações no banco de dados! Isso seria somente mais um passo!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    quarta-feira, 22 de fevereiro de 2017 18:59
  • Bom, infelizmente eu não sei como fazer ainda. Até agora só consegui fazer o UserForm para a digitação do que eu quero e usar o combobox  para seleção do que eu quero e depois gravar esses valores. Linkar uma planilha a um txtbox eu não aprendi ainda. Vc poderia me dar um exemplo de código pra ficar um pouco mais claro?

    Obrigado

     
    quarta-feira, 22 de fevereiro de 2017 19:27
  • Te aconselho a fazer este exemplo do link é completo!

    http://www.devmedia.com.br/cadastro-de-um-consultorio-em-windows-forms-com-c-e-sql-server-parte-1/16817


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    quarta-feira, 22 de fevereiro de 2017 19:30
  • Você está usando o Excel ou Access?

    Verifique o evento Initialize do seu formulário e coloque o código lá.


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    quarta-feira, 22 de fevereiro de 2017 20:43
    Moderador
  • Estou utilizando o Excel. Eu realmente não entendi o exemplo que foi mandado. Sou bem iniciante nesse ramo. Alguém poderia me explicar um pouco mais "mastigado"? Obrigado 
    quinta-feira, 23 de fevereiro de 2017 13:01
  • @Daniel,

    Este é um fórum de VBA.


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    quinta-feira, 23 de fevereiro de 2017 13:05
    Moderador
  • Coloque um código como esse na classe do seu formulário:

    Private Sub UserForm_Initialize()
        TextBox1 = WorksheetFunction.CountA(Columns("A")) + 1
    End Sub
    


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    quinta-feira, 23 de fevereiro de 2017 13:07
    Moderador
  • Obrigado Felipe. Tentei aqui mas sem sucesso. Quando abro o userform para cadastrar, o chamado continua vazio. Vou colar meu código completo aqui com o seu código pra vc entender melhor o que estou fazendo. (Tem muita coisa que provavelmente vai achar bem amador, mas comecei a entrar nesse mundo segunda...kkk)

    Private Sub UserForm_Initialize()
        txtChamado = WorksheetFunction.CountA(Columns("A")) + 1
    End Sub
    
    'Seleção das sub-áreas baseadas na área escolhida
    Private Sub CboAreaSolicit_Change()
    If cboAreaSolicit.Value = "Qualidade" Then
        cboSubarea.RowSource = "Dados!F13:F19"
    Else
    
    If cboAreaSolicit.Value = "Plantio" Then
        cboSubarea.RowSource = "Dados!F20:F21"
    Else
    
    If cboAreaSolicit.Value = "Tratos" Then
        cboSubarea.RowSource = "Dados!F22:F29"
    Else
    
    If cboAreaSolicit.Value = "Colheita" Then
        cboSubarea.RowSource = "Dados!F30:F34"
    Else
    
    If cboAreaSolicit.Value = "Máquinas" Then
        cboSubarea.RowSource = "Dados!F35:F38"
    Else
    
    If cboAreaSolicit.Value = "Topografia" Then
        cboSubarea.RowSource = "Dados!F39:F41"
    Else
    
    If cboAreaSolicit.Value = "Não Listado" Then
        cboSubarea.RowSource = "Dados!F42"
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    End Sub
    
    'Seleção do tempo de realização da atividade baseada na prioridade escolhida
    Private Sub CboPrioridade_Change()
    If cboPrioridade.Value = "Alta" Then
        cboTempo.RowSource = "Dados!C25:C28"
    Else
    
    If cboPrioridade.Value = "Média" Then
        cboTempo.RowSource = "Dados!C29:C31"
    Else
    
    If cboPrioridade.Value = "Baixa" Then
        cboTempo.RowSource = "Dados!C32:C33"
    End If
    End If
    End If
    
    End Sub
    
    'Seleção do email do responsável baseado na escolha do responsável
    Private Sub cboResponsavel_Change()
    
    If cboResponsavel.Value = "Jader" Then
        cboEmailRespons.RowSource = "Dados!H13"
    Else
    
    If cboResponsavel.Value = "Fabiano" Then
        cboEmailRespons.RowSource = "Dados!H20"
    Else
    
    If cboResponsavel.Value = "Rafael" Then
        cboEmailRespons.RowSource = "Dados!H22"
    Else
    
    If cboResponsavel.Value = "Marlon" Then
        cboEmailRespons.RowSource = "Dados!H30"
    Else
    
    If cboResponsavel.Value = "Alan" Then
        cboEmailRespons.RowSource = "Dados!H35"
    Else
    
    If cboResponsavel.Value = "Monica" Then
        cboEmailRespons.RowSource = "Dados!H39"
    Else
    
    If cboResponsavel.Value = "Ricardo" Then
        cboEmailRespons.RowSource = "Dados!H42"
    End If
    End If
    End If
    End If
    End If
    End If
    End If
    
    End Sub
    
    
    
    'Seleção do Gestor responsável baseado na sub-área escolhida
    Private Sub cboSubarea_Change()
    
    If cboSubarea.Value = "Amostragem de solo" Then
        cboResponsavel.RowSource = "Dados!G13"
    Else
    
    If cboSubarea.Value = "Análise de perdas" Then
        cboResponsavel.RowSource = "Dados!G14"
    Else
    
    If cboSubarea.Value = "Análise varietal" Then
        cboResponsavel.RowSource = "Dados!G15"
    Else
    
    If cboSubarea.Value = "Fertilidade do solo" Then
        cboResponsavel.RowSource = "Dados!G16"
    Else
    
    If cboSubarea.Value = "Amostragem de pragas" Then
        cboResponsavel.RowSource = "Dados!G17"
    Else
    
    If cboSubarea.Value = "Pré análise de cana" Then
        cboResponsavel.RowSource = "Dados!G18"
    Else
    
    If cboSubarea.Value = "Sistematização" Then
        cboResponsavel.RowSource = "Dados!G19"
    Else
    
    If cboSubarea.Value = "Disponibilidade de mudas" Then
        cboResponsavel.RowSource = "Dados!G20"
    Else
    
    If cboSubarea.Value = "Realização de plantio" Then
        cboResponsavel.RowSource = "Dados!G21"
    Else
    
    If cboSubarea.Value = "Aplicação de herbicidas" Then
        cboResponsavel.RowSource = "Dados!G22"
    Else
    
    If cboSubarea.Value = "Aplicação de fungicidas" Then
        cboResponsavel.RowSource = "Dados!G23"
    Else
    
    If cboSubarea.Value = "Controle biológico de pragas" Then
        cboResponsavel.RowSource = "Dados!G24"
    Else
    
    If cboSubarea.Value = "Controle químico de pragas" Then
        cboResponsavel.RowSource = "Dados!G25"
    Else
    
    If cboSubarea.Value = "Eliminação de soqueiras" Then
        cboResponsavel.RowSource = "Dados!G26"
    Else
    
    If cboSubarea.Value = "Aplicação de fertilizantes" Then
        cboResponsavel.RowSource = "Dados!G27"
    Else
    
    If cboSubarea.Value = "Vinhaça" Then
        cboResponsavel.RowSource = "Dados!G28"
    Else
    
    If cboSubarea.Value = "Vinhaça concentrada" Then
        cboResponsavel.RowSource = "Dados!G29"
    Else
    
    If cboSubarea.Value = "CCT" Then
        cboResponsavel.RowSource = "Dados!G30"
    Else
    
    If cboSubarea.Value = "Corte" Then
        cboResponsavel.RowSource = "Dados!G31"
    Else
    
    If cboSubarea.Value = "Carregamento" Then
        cboResponsavel.RowSource = "Dados!G32"
    Else
    
    If cboSubarea.Value = "Transporte" Then
        cboResponsavel.RowSource = "Dados!G33"
    Else
    
    If cboSubarea.Value = "Combate incêndio" Then
        cboResponsavel.RowSource = "Dados!G34"
    Else
    
    If cboSubarea.Value = "Máquinas pesadas (D6, P6)" Then
        cboResponsavel.RowSource = "Dados!G35"
    Else
    
    If cboSubarea.Value = "Moto niveladora" Then
        cboResponsavel.RowSource = "Dados!G36"
    Else
    
    If cboSubarea.Value = "Prancha" Then
        cboResponsavel.RowSource = "Dados!G37"
    Else
    
    If cboSubarea.Value = "Implementos" Then
        cboResponsavel.RowSource = "Dados!G38"
    Else
    
    If cboSubarea.Value = "Levantamento de área" Then
        cboResponsavel.RowSource = "Dados!G39"
    Else
    
    If cboSubarea.Value = "Cadastramento de área" Then
        cboResponsavel.RowSource = "Dados!G40"
    Else
    
    If cboSubarea.Value = "Elaboração de mapas" Then
        cboResponsavel.RowSource = "Dados!G41"
    Else
    
    If cboSubarea.Value = "Não listado" Then
        cboResponsavel.RowSource = "Dados!G42"
    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 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
    'Fechar Programa
    Private Sub cmdFechar_Click()
    Registro.Hide
    End Sub
    
    'Ativar o botão Gravar
    Private Sub cmdGravar_Click()
    
    'Ativar a planilha do registro
    ThisWorkbook.Worksheets("Registro").Activate
    
    'Selecionar a célula A2
    Range("A2").Select
    
    'Procurar a primeira célula vazia
    Do
        If Not (IsEmpty(ActiveCell)) Then
            ActiveCell.Offset(1, 0).Select
        End If
    Loop Until IsEmpty(ActiveCell) = True
    
    'Carregar os dados digitados nas caixas de texto para a planilha
    ActiveCell.Value = txtChamado.Value
    ActiveCell.Offset(0, 1) = cboSolicitante.Value
    ActiveCell.Offset(0, 2) = txtData.Value
    ActiveCell.Offset(0, 3) = txtHora.Value
    ActiveCell.Offset(0, 4) = txtUsuario.Value
    ActiveCell.Offset(0, 5) = cboCategUsuar.Value
    ActiveCell.Offset(0, 6) = txtEmail.Value
    ActiveCell.Offset(0, 7) = txtFone.Value
    ActiveCell.Offset(0, 8) = cboAreaSolicit.Value
    ActiveCell.Offset(0, 9) = cboSubarea.Value
    ActiveCell.Offset(0, 10) = cboResponsavel.Value
    ActiveCell.Offset(0, 11) = cboEmailRespons.Value
    ActiveCell.Offset(0, 12) = cboPrioridade.Value
    ActiveCell.Offset(0, 13) = cboTempo.Value
    ActiveCell.Offset(0, 14) = txtDescr.Value
    
    'Limpar as caixas de texto
    txtChamado.Value = Empty
    txtData.Value = Empty
    txtHora.Value = Empty
    txtUsuario.Value = Empty
    txtEmail.Value = Empty
    txtFone.Value = Empty
    txtDescr.Value = Empty
    
    'Limpar as caixas de combinação
    cboSolicitante.Value = Empty
    cboCategUsuar.Value = Empty
    cboAreaSolicit.Value = Empty
    cboSubarea.Value = Empty
    cboResponsavel.Value = Empty
    cboEmailRespons.Value = Empty
    cboPrioridade.Value = Empty
    cboTempo.Value = Empty
    
    'Colocar o foco na primeira caixa de texto
    txtChamado.SetFocus
    
    End Sub
    
    
    Private Sub txtChamado_Change()
    
    End Sub
    
    'Travar formato de data 01
    Private Sub txtData_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
        'Limita a Qde de caracteres
        txtData.MaxLength = 10
     
        'para permitir que apenas números sejam digitados
        If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
            KeyAscii = 0
        End If
     
    End Sub
    'Travar formato de data 02
    Private Sub txtData_Change()
        'Formata : dd/mm/aaaa
        If Len(txtData) = 2 Or Len(txtData) = 5 Then
            txtData.Text = txtData.Text & "/"
            SendKeys "{End}", True
        End If
    End Sub
    

    quinta-feira, 23 de fevereiro de 2017 13:29
  • Troque a estrutura:

    If cboAreaSolicit.Value = "Qualidade" Then
        cboSubarea.RowSource = "Dados!F13:F19"
    Else
    
    If cboAreaSolicit.Value = "Plantio" Then
        cboSubarea.RowSource = "Dados!F20:F21"
    Else
    
    If cboAreaSolicit.Value = "Tratos" Then
        cboSubarea.RowSource = "Dados!F22:F29"
    ...
    

    por:

    Select Case cboAreaSolicit.Value
        Case "Qualidade": cboSubarea.RowSource = "Dados!F13:F19"
        Case "Plantio":   cboSubarea.RowSource = "Dados!F20:F21"
        Case "Tratos":    cboSubarea.RowSource = "Dados!F22:F29"
        '...
    End Select
    

    E assim por diante.

    ---

    Pelo que entendi, os chamados ficam na coluna A, não?

    Era para essa fórmula funcionar, pois ela conta a quantidade de células preenchidas na coluna A.

    txtChamado está ficando em branco?


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    quinta-feira, 23 de fevereiro de 2017 13:37
    Moderador
  • Grande Felipe!! Deu certo agora. Fechei a planilha e abri de novo. Assim deu certo. Uma última coisa. Na planilha, os chamados ficam na coluna A sim, mas começa na segunda linha pq tem o cabeçalho. Teria que alterar muita coisa neste caso? Se tiver, eu retiro o cabeçalho e aí fica certinho.

    Obrigado

    quinta-feira, 23 de fevereiro de 2017 16:22
  • Basta subtrair 1 da solução original:

    TextBox1 = WorksheetFunction.CountA(Columns("A"))
    


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    sexta-feira, 24 de fevereiro de 2017 01:00
    Moderador
  • Bom dia Felipe. Novamente obrigado pela ajuda. Mas ainda estou com um problema referente ao que vc me mandou. Quando abro a primeira vez, o número do chamado aparece automático. Mas quando eu gravo, e a ordem de serviço é registrada na planilha, o Userform volta todo em branco, sem o número automático. Mesmo que eu feche o User e abra novamente, o número do chamado não vai estar lá. Eu queria que ao gravar, o user limpasse todos os campos e automaticamente ja alterasse o número do chamado. É possível?

    PS: Eu não consigo colocar uma imagem aqui para exemplificar. Nem mandar o arquivo.

    • Editado renan_p sexta-feira, 24 de fevereiro de 2017 10:53
    sexta-feira, 24 de fevereiro de 2017 10:51
  • Ao gravar, onde vocÊ limpa o textbox do número do chamado:

    txtChamado.Value = Empty
    

    Você deve atualizar seu valor:

    txtChamado = WorksheetFunction.CountA(Columns("A")) + 1
    


    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    segunda-feira, 27 de fevereiro de 2017 13:15
    Moderador