Usuário com melhor resposta
ComboBox

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?
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
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 20 de dezembro de 2014 11:29
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
-
-
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.Textmensagem1 = 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
-
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.Textmensagem1 = 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 -
-
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
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 20 de dezembro de 2014 11:29