none
ComboBox RRS feed

  • Pergunta

  • Olá;

    Tenho uma planilha igual para cada um dos 12 meses.  No meu formulário de cadastro tenho uma combobox de seleção de mês funcionando corretamente. No entanto, mesmo selecionando meses diferentes, os dados são enviados sempre para a planilha de janeiro. 

    Como eu faço para que os dados digitados sejam enviados para a planilha correspondente ao mês selecionado na combo?

    segunda-feira, 16 de junho de 2014 21:49

Respostas

  • Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.

    ---

    Sugiro declarar suas variáveis. Dessa forma, você irá adicionar consistência ao seu código: http://www.ambienteoffice.com.br/officevba/variaveis_e_constantes/#declaracao_de_variaveis

    ---

    Sobre sua dúvida, tente adaptar este procedimento para suas necessidades:

    Private Sub btgravar_Click()
      Dim wks As Excel.Worksheet
      Dim mensagem1 As VbMsgBoxResult
      Dim linha As Object
      Dim strMês As String
      Dim lngRow As Long
      
      strMês = cbmes.Text
      If strMês = "" Then Exit Sub
      
      Set wks = ThisWorkbook.Worksheets(strMês)
      
      With wks
        lngRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Cells(lngRow, "A").Value2 = cbnome.Text
        .Cells(lngRow, "B").Value2 = txtfaceta.Text
        .Cells(lngRow, "C").Value2 = txtlivros.Text
        '...
        mensagem1 = MsgBox("Dados inseridos com sucesso... Deseja inserir outro registro?", 3, "Inserindo")
        
        If mensagem1 = vbYes Then
          txtfaceta.Text = ""
          cbnome.Text = ""
          txtlivros.Text = ""
          txtfolhetos.Text = ""
          txthoras.Text = ""
          txtrevistas.Text = ""
          txtrevisitas.Text = ""
          txtestudos.Text = ""
          cbnome.SetFocus
        End If
      End With
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 17 de junho de 2014 17:54
    Moderador

Todas as Respostas

  • Experimente algo como:

    Private Sub CommandButton1_Click()
      Dim strMês As String
      
      strMês = ComboBox1.Text
      If strMês = "" Then Exit Sub
      
      ThisWorkbook.Worksheets(strMês).Range("A1").Value2 = "Teste!"
    End Sub
    
    Private Sub UserForm_Initialize()
      ComboBox1.AddItem "Janeiro"
      ComboBox1.AddItem "Fevereiro"
      '...
      ComboBox1.AddItem "Dezembro"
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 17 de junho de 2014 00:23
    Moderador
  • Msouza, 

    Como é o nome da guia e como você está gravando os dados?

    posta como está seu código.....

    terça-feira, 17 de junho de 2014 12:13

  • Esse é o meu código até o momento. Os meses começam na planilha 7 (Janeiro).

    O nome do meu formulário é frm_relatorios

    Private Sub btfechar_Click()
    Unload frm_relatorios
    End Sub

    Private Sub btgravar_Click()

    Sheets("Janeiro").Select
    Range("A10").Select

    Dim linha As Object
    Set linha = Plan7.Range("A100").End(xlUp)
    linha.Offset(1, 0).Value = cbnome.Text
    linha.Offset(1, 1).Value = txtfaceta.Text
    linha.Offset(1, 2).Value = txtlivros.Text
    linha.Offset(1, 3).Value = txtfolhetos.Text
    linha.Offset(1, 4).Value = txthoras.Text
    linha.Offset(1, 5).Value = txtrevistas.Text
    linha.Offset(1, 6).Value = txtrevisitas.Text
    linha.Offset(1, 7).Value = txtestudos.Text

    mensagem1 = MsgBox("Dados inseridos com sucesso... Deseja inserir outro registro?", 3, "Inserindo")

    If mensagem1 = vbYes Then
    txtfaceta.Text = ""
    cbnome.Text = ""
    txtlivros.Text = ""
    txtfolhetos.Text = ""
    txthoras.Text = ""
    txtrevistas.Text = ""
    txtrevisitas.Text = ""
    txtestudos.Text = ""
    cbnome.SetFocus
    End If
    End Sub

    Private Sub btlimpar_Click()
    txtfaceta = ""
    cbnome = ""
    cbmes = ""
    txtlivros = ""
    txtfolhetos = ""
    txthoras = ""
    txtrevistas = ""
    txtrevisitas = ""
    txtestudos = ""

    End Sub

    Private Sub UserForm_Initialize()
    linha = 2
    Do Until Sheets("Meses").Cells(linha, 1) = ""
    cbmes.AddItem Sheets("Meses").Cells(linha, 1)
    linha = linha + 1
    Loop

    End Sub

    terça-feira, 17 de junho de 2014 16:58
  • Olá Felipe;

    Obrigado por ter respondido mas, ainda não tá funcionando. Segue o meu código abaixo. Se vc puder dar uma olhadinha  ficarei muito agradecido.

    

    Esse é o meu código até o momento. Os meses começam na planilha 7 (Janeiro).

    O nome do meu formulário é frm_relatorios

    Private Sub btfechar_Click()
    Unload frm_relatorios
    End Sub

    Private Sub btgravar_Click()

    Sheets("Janeiro").Select
    Range("A10").Select

    Dim linha As Object
    Set linha = Plan7.Range("A100").End(xlUp)
    linha.Offset(1, 0).Value = cbnome.Text
    linha.Offset(1, 1).Value = txtfaceta.Text
    linha.Offset(1, 2).Value = txtlivros.Text
    linha.Offset(1, 3).Value = txtfolhetos.Text
    linha.Offset(1, 4).Value = txthoras.Text
    linha.Offset(1, 5).Value = txtrevistas.Text
    linha.Offset(1, 6).Value = txtrevisitas.Text
    linha.Offset(1, 7).Value = txtestudos.Text

    mensagem1 = MsgBox("Dados inseridos com sucesso... Deseja inserir outro registro?", 3, "Inserindo")

    If mensagem1 = vbYes Then
    txtfaceta.Text = ""
    cbnome.Text = ""
    txtlivros.Text = ""
    txtfolhetos.Text = ""
    txthoras.Text = ""
    txtrevistas.Text = ""
    txtrevisitas.Text = ""
    txtestudos.Text = ""
    cbnome.SetFocus
    End If
    End Sub

    Private Sub btlimpar_Click()
    txtfaceta = ""
    cbnome = ""
    cbmes = ""
    txtlivros = ""
    txtfolhetos = ""
    txthoras = ""
    txtrevistas = ""
    txtrevisitas = ""
    txtestudos = ""

    End Sub

    Private Sub UserForm_Initialize()
    linha = 2
    Do Until Sheets("Meses").Cells(linha, 1) = ""
    cbmes.AddItem Sheets("Meses").Cells(linha, 1)
    linha = linha + 1
    Loop

    End Sub

     

    terça-feira, 17 de junho de 2014 17:01
  • msousa,

    Se o combobox tiver o mês escrito você pode simplesmente colocar assim:

    Sheets(comboboxMes.value).Select


    terça-feira, 17 de junho de 2014 17:06
  • Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.

    ---

    Sugiro declarar suas variáveis. Dessa forma, você irá adicionar consistência ao seu código: http://www.ambienteoffice.com.br/officevba/variaveis_e_constantes/#declaracao_de_variaveis

    ---

    Sobre sua dúvida, tente adaptar este procedimento para suas necessidades:

    Private Sub btgravar_Click()
      Dim wks As Excel.Worksheet
      Dim mensagem1 As VbMsgBoxResult
      Dim linha As Object
      Dim strMês As String
      Dim lngRow As Long
      
      strMês = cbmes.Text
      If strMês = "" Then Exit Sub
      
      Set wks = ThisWorkbook.Worksheets(strMês)
      
      With wks
        lngRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Cells(lngRow, "A").Value2 = cbnome.Text
        .Cells(lngRow, "B").Value2 = txtfaceta.Text
        .Cells(lngRow, "C").Value2 = txtlivros.Text
        '...
        mensagem1 = MsgBox("Dados inseridos com sucesso... Deseja inserir outro registro?", 3, "Inserindo")
        
        If mensagem1 = vbYes Then
          txtfaceta.Text = ""
          cbnome.Text = ""
          txtlivros.Text = ""
          txtfolhetos.Text = ""
          txthoras.Text = ""
          txtrevistas.Text = ""
          txtrevisitas.Text = ""
          txtestudos.Text = ""
          cbnome.SetFocus
        End If
      End With
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 17 de junho de 2014 17:54
    Moderador