none
Inserido dados em Planilhas com auxilio de ComboBox RRS feed

  • Pergunta

  • Quero preparar um projeto em VBA no Excel e quero fazer com que o único ComboBox que tenho num formulário (userform), indique aos TextBox's que tenho nesse mesmo formulário, em que planilha será inserido os dados colocados nos TextBox. Por exemplo:
    Tenho as planilhas: Dados1, Dados2, Dados3 e Dados4
    Tenho os controles: ComboBox1, TextBox1 e TextBox2
    Se no userform o ComboBox1 tiver o valor 1 , os TextBox1 e TextBox2 farão a inserção de valores na planilha Dados1
    Se no userform o ComboBox1 tiver o valor 2 , os TextBox1 e TextBox2 farão a inserção de valores na planilha Dados2
    Se no userform o ComboBox1 tiver o valor 3 , os TextBox1 e TextBox2 farão a inserção de valores na planilha Dados3
    Por favor, me ajudem, estou DESESPERADA!!!
    sexta-feira, 29 de janeiro de 2010 12:01

Respostas

  • Olá...bom dia....um pequeno erro...

    Private Sub CommandButton1_Click()
       PLAN.Range("b" & IdALuno) = TextBox1
       PLAN.Range("c" & IdALuno) = TextBox2
       PLAN.Range("d" & IdALuno) = TextBox3
       PLAN.Range("e" & IdALuno) = TextBox4
    End Sub

    Agora vai dar.....

    • Marcado como Resposta Iranilce quarta-feira, 3 de fevereiro de 2010 13:26
    quarta-feira, 3 de fevereiro de 2010 12:56

Todas as Respostas

  • Para guiar planilha pelo combox:

    Private Sub ComboBox1_Click()
    If ComboBox1.Value = 1 Then
    Sheets("Dados1").Select
    End If
    If ComboBox1.Value = 2 Then
    Sheets("Dados2").Select
    End If
    If ComboBox1.Value = 3 Then
    Sheets("Dados3").Select
    End If
    End Sub
    

    Tu tens um procedimento para inserir os valores?


    jose
    sexta-feira, 29 de janeiro de 2010 20:36
  • Olá....Um exemplo pra você gravar seus dados...este exemplo começa a gravar a partir da célula A2 na planilha selecionada( no combo) qualquer dúvida post denovo..

    ComboBox1, TextBox1 e TextBox2 e um botão para gravar...

    Private Sub CommandButton1_Click()
        Select Case ComboBox1.Value
            Case Is = 1
                GRAVADADOS ("Dados1")
            Case Is = 2
                GRAVADADOS ("Dados2")
            Case Is = 3
                GRAVADADOS ("Dados3")
        End Select
    End Sub

    Sub GRAVADADOS(NomePlan As String)
        Set Plan = Sheets(NomePlan)
        LastRow = Plan.Cells(Rows.Count, 1).End(xlUp).Row + 1
        Plan.Cells(LastRow, 1).Value = TextBox1.Text
        Plan.Cells(LastRow, 2).Value = TextBox2.Text
    End Sub

    Até...
    Se solucionar marque como respondida...

    segunda-feira, 1 de fevereiro de 2010 18:02
  • Vou tentar explicar melhor:
    Lista dos controles que pretendo utilizar:

    2 ComboBox's (ComboBox1 => listando nomes de alunos em A2:A7; ComboBox2 => listando nomes das planilhas DADOS1, DADOS2, e DADOS3, listadas em K2:K7);
    4 TextBox's com seus respectivos Label's;
    1 CommandButton ---> para gravar.

    Os labels dos textbox's encontram-se as datas escritas nas células: "B1:E1", essas datas vão variar de acordo com o valor selecionado no ComboBox2. O ComboBox2 indica em que planilha (Bimestres = DADOS1, etc...) as faltas ("F") irão ser lançadas. O ComboBox1 indica o nome do aluno no qual irá ser lançado a falta e com isso a linha a ser trabalhada.

    Espero que eu tenha me explicado melhor, estou anciosa pela resposta.

    OBRIGADA pela ajuda!
    Aguardo

    terça-feira, 2 de fevereiro de 2010 18:32
  • Olá...
    Tente assim...

    Dim PLAN As Worksheet
    Dim IdALuno As Long

    Private Sub ComboBox1_Click()
        Set PLAN = Worksheets(ComboBox1.Text)
        Atualiza
    End Sub

    Private Sub ComboBox2_Click()
        IdALuno = ComboBox2.ListIndex + 2
        Atualiza
    End Sub

    Private Sub CommandButton1_Click()
       Range("b" & IdALuno) = TextBox1
       Range("c" & IdALuno) = TextBox2
       Range("d" & IdALuno) = TextBox3
       Range("e" & IdALuno) = TextBox4
    End Sub

    Private Sub UserForm_Initialize()
        For Each PLAN In Worksheets
            ComboBox1.AddItem PLAN.Name
        Next
        IdALuno = 2
        ComboBox1.ListIndex = 0
        ComboBox2.RowSource = "Plan1!A2:A7" ' ALUNOS
        ComboBox2.ListIndex = 0
    End Sub

    Private Sub Atualiza()
        Label1.Caption = PLAN.Range("B1")
        Label2.Caption = PLAN.Range("C1")
        Label3.Caption = PLAN.Range("D1")
        Label4.Caption = PLAN.Range("E1")
        TextBox1 = PLAN.Range("b" & IdALuno)
        TextBox2 = PLAN.Range("c" & IdALuno)
        TextBox3 = PLAN.Range("d" & IdALuno)
        TextBox4 = PLAN.Range("e" & IdALuno)
    End Sub

    Até..

    terça-feira, 2 de fevereiro de 2010 20:17
  • Boa Noite, EvangelistaLio, muito obrigada pela atenção.

    Tentei executar o form e apareceu o seguinte problema: mesmo eu escolhendo no ComboBox1 a planilha em que deveriam ser lançados os dados, todas as vezes os dados eram lançados na 1ª planilha, ou seja "DADOS1", é apenas este o problema.

    Ficarei grata, se puderes se ajudar no contorno desse problema.


    • Private Sub UserForm_Initialize()
          For Each PLAN In Worksheets
              ComboBox1.AddItem PLAN.Name
          Next
          IdALuno = 2
          ComboBox1.ListIndex = 0
          ComboBox2.RowSource = "PLAN!A2:A7" ' ALUNOS ----> apenas nessa parte tive que fazer
          ComboBox2.ListIndex = 0                                             uma mudança, ao invés de PLAN!
      End Sub                                                                          coloquei DADOS1!, na hora da                                                                                                execução dava erro:                                                                                                "Não foi possível definir  a                                                                                        propriedade RowSoucer..."
    • É possível fazer com que na ComboBox1 apareça apenas as planilhas que eu desejar??
    • Se possível como fazer isso?
    • Editado Iranilce quarta-feira, 3 de fevereiro de 2010 10:40 Melhor Explicação
    quarta-feira, 3 de fevereiro de 2010 02:01
  • Olá....Entendi...Creio que agora tá tudo certo..

    Dim PLAN As Worksheet
    Dim IdALuno As Long

    Private Sub ComboBox1_Click()
        Set PLAN = Worksheets(ComboBox1.Text)
        ComboBox2.RowSource = PLAN.Name & "!A2:A7"
        ComboBox2.ListIndex = 0
        Atualiza
    End Sub

    Private Sub ComboBox2_Click()
        IdALuno = ComboBox2.ListIndex + 2
        Atualiza
    End Sub

    Private Sub CommandButton1_Click()
       Range("b" & IdALuno) = TextBox1
       Range("c" & IdALuno) = TextBox2
       Range("d" & IdALuno) = TextBox3
       Range("e" & IdALuno) = TextBox4
    End Sub

    Private Sub UserForm_Initialize()
        ComboBox1.Style = fmStyleDropDownList ' assim o usuário não consegue alterar o valor do combo
        ComboBox2.Style = fmStyleDropDownList
        ComboBox1.AddItem "DADOS1"
        ComboBox1.AddItem "DADOS2"
        ComboBox1.AddItem "DADOS3"
        IdALuno = 2
        ComboBox1.ListIndex = 0
        ComboBox2.RowSource = PLAN.Name & "!A2:A7"
        ComboBox2.ListIndex = 0
    End Sub

    Private Sub Atualiza()
        Label1.Caption = PLAN.Range("B1")
        Label2.Caption = PLAN.Range("C1")
        Label3.Caption = PLAN.Range("D1")
        Label4.Caption = PLAN.Range("E1")
        TextBox1 = PLAN.Range("b" & IdALuno)
        TextBox2 = PLAN.Range("c" & IdALuno)
        TextBox3 = PLAN.Range("d" & IdALuno)
        TextBox4 = PLAN.Range("e" & IdALuno)
    End Sub

    Se solucionar marque como respondida...
    Até....

    quarta-feira, 3 de fevereiro de 2010 11:11
  • Olá, Bom dia!
    Meu caro amigo, sinto que estamos quase chegando lá. O problema é que mesmo eu selecionando no ComboBox1 o item "Dados2", após clicar no CommandButton1, os dados inseridos não vão para a planilha "Dados2", mas continuam sendo inserido na planilha "Dados1". A mesma acontece quando tento inserir na planilha "Dados3".

    Se puderes me ajudar, fico agradecida!
    quarta-feira, 3 de fevereiro de 2010 12:13
  • Olá...bom dia....um pequeno erro...

    Private Sub CommandButton1_Click()
       PLAN.Range("b" & IdALuno) = TextBox1
       PLAN.Range("c" & IdALuno) = TextBox2
       PLAN.Range("d" & IdALuno) = TextBox3
       PLAN.Range("e" & IdALuno) = TextBox4
    End Sub

    Agora vai dar.....

    • Marcado como Resposta Iranilce quarta-feira, 3 de fevereiro de 2010 13:26
    quarta-feira, 3 de fevereiro de 2010 12:56
  • Realmente agora deu certo, amigo!

    Eu ja estava utilizando um código assim:

    Private Sub CommandButton1_Click()
       If ComboBox1.Value = "Dados1" Then
       Sheets("Dados1").Select
       Range("b" & IdALuno) = TextBox1
       Range("c" & IdALuno) = TextBox2
       Range("d" & IdALuno) = TextBox3
       Range("e" & IdALuno) = TextBox4
      
       ElseIf ComboBox1.Value = "Dados2" Then
       Sheets("Dados2").Select
       Range("b" & IdALuno) = TextBox1
       Range("c" & IdALuno) = TextBox2
       Range("d" & IdALuno) = TextBox3
       Range("e" & IdALuno) = TextBox4
      
        ElseIf ComboBox1.Value = "Dados3" Then
       Sheets("Dados3").Select
       Range("b" & IdALuno) = TextBox1
       Range("c" & IdALuno) = TextBox2
       Range("d" & IdALuno) = TextBox3
       Range("e" & IdALuno) = TextBox4


    Só que o seu ta bem mais enchuto, valeu!!!
    quarta-feira, 3 de fevereiro de 2010 13:26
  • Que bom que deu certo....Quando precisar é só postar....Bye

    quarta-feira, 3 de fevereiro de 2010 13:36
  • Por favor, dê uma olhada nesse código de um CommandButton2 que estou tentando inserir no mesmo userform do meu projeto para visualizar impressão das planilhas em questão (Dados1, Dados2, Dados3).

    Private Sub CommandButton2_Click()
    Unload UserForm1
        If ComboBox1.Value = "Dados1" Then
        Sheets("Dados1").Select
        ActiveWindow.SelectedSheets.PrintPreview

        ElseIf ComboBox1.Value = "Dados2" Then
        Sheets("Dados2").Select
        ActiveWindow.SelectedSheets.PrintPreview
       
        ElseIf ComboBox1.Value = "Dados3" Then
        Sheets("Dados3").Select
        ActiveWindow.SelectedSheets.PrintPreview
       
        End If
        End Sub


    E na pasta de trabalho, coloquei:

    Private Sub Workbook_Activate()
    Sheets("Dados1").Select
    UserForm1.Show
    End Sub

    Private Sub Workbook_Open()
    Sheets("Dados1").Select
    UserForm1.Show
    End Sub

    Quando abro a pasta de trabalho ela carrega o userform1. Quando seleciono no ComboBox1 o item Dados1 e clico no CommandButton2, visualizo a impressão da Plan. Dados1 e quando fecho a visualização de impressão o meu userform retorna à tela, normal! Só que o mesmo não acontece quando seleciono no ComboBox1 as demais planilhas, até consigo visualizar a impressão delas, só que quando fecho a visualização o meu userform1 não fica visível.


    Você pode me ajudar?
    quarta-feira, 3 de fevereiro de 2010 13:37