Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

pedro_mexico

[Resolvido] Ajuda com gravaçao de dados em VBA

Mensagens Recomendadas

pedro_mexico

Boa noite pessoal do fórum, preciso da vossa ajuda.

Tenho um formulário em vba e queria que ele grava-se os dados em folhas separadas mediante valor introduzido numa combobox.

a ideia é , eu ao seleccionar o valor 1 da combobox ele vá gravar por exemplo na folha 1, ao seleccionar o valor2 da combobox ele va gravar na folha 2 .

eu ja tenhoi este codigo mas ele nao vai seleccionar a folha que quero

"Dim lin As Integer

lin = ActiveSheet.UsedRange.Rows.Count + 1 'Define a variavel Lin como a ultima linha e soma + 1

For a = 2 To lin

Next

If Cells(lin, "B") = "" Then

Cells(lin, "B") = txtnomes

Cells(lin, "C") = txtapelidos

Cells(lin, "D") = cmbposto

'Grava os dados agora na folha correspondente ao posto selecionado

Select Case cmbposto.Value 'Selecione de acordo o valor de ComboBox

Case Is = "chefe"

ThisWorkbook.Sheets("page1").Select

Case Is = "assistentes"

ThisWorkbook.Sheets("page2").Select

End Select

End If

If MsgBox("Dados gravados com sucesso!", vbQuestion + vbYesNo, "Registo") = vbYes Then

txtnomes = ""

txtapelidos = ""

cmbposto = ""

End If"

espero a vossa ajuda. Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedro_mexico

CRLF,Obrigado, em parte deu certo.

não sei se podia ajudar no erro que me dá.

eu tenho na folha excel onde gravo os dados, varias colunas com códigos, uma delas é para calcular a idade,para mais tarde quando fizer a pesquisa no campo idade ele introduzir esse valor, isso está a criar o erro de fazer com que as novas gravações só apareçam depois da ultima linha com essa formatação.

existe alguma maneira de os dados serem carregados através da primeira linha vazia da coluna A?

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Gnrtuga

Boas, não sei se percebi bem o que queres, mas para apanhares a última linha vazia faz assim:

Dim ultimalinha As Long
ultimalinha = Folha1.Cells(65536, 1).End(xlUp).Row + 1
Folha1.Cells(ultimalinha, 1).Value = "Valor a ser introduzido"

em que o primeiro valor (65536) é o valor máximo onde começa a procurar o (,1) corresponde à coluna A

Espero que ajude, boa sorte!


Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedro_mexico

Boas, não sei se percebi bem o que queres, mas para apanhares a última linha vazia faz assim:

Dim ultimalinha As Long
ultimalinha = Folha1.Cells(65536, 1).End(xlUp).Row + 1
Folha1.Cells(ultimalinha, 1).Value = "Valor a ser introduzido"

em que o primeiro valor (65536) é o valor máximo onde começa a procurar o (,1) corresponde à coluna A

Espero que ajude, boa sorte!

boa noite GNRtuga,

como poderia integrar o seu codigo neste que ja tenho?

""Dim lin As Integer

lin = ActiveSheet.UsedRange.Rows.Count + 1 'Define a variavel Lin como a ultima linha e soma + 1

For a = 2 To lin

Next

If Cells(lin, "B") = "" Then

Cells(lin, "B") = txtnomes

Cells(lin, "C") = txtapelidos

Cells(lin, "D") = cmbposto

'Grava os dados agora na folha correspondente ao posto selecionado

Select Case cmbposto.Value 'Selecione de acordo o valor de ComboBox

Case Is = "chefe"

ThisWorkbook.Sheets("page1").Select

Case Is = "assistentes"

ThisWorkbook.Sheets("page2").Select

End Select

End If

If MsgBox("Dados gravados com sucesso!", vbQuestion + vbYesNo, "Registo") = vbYes Then

txtnomes = ""

txtapelidos = ""

cmbposto = ""

End If"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Gnrtuga

Boas, desculpa a demora.

Portanto, no meu código não tens que fazer um ciclo para ver se a última linha está vazia porque ele faz isso sozinho.

Eu faria assim:

sub Chefe()
Dim ultimalinha As Long
ultimalinha = Folha1.Cells(65536, 2).End(xlUp).Row + 1
Folha1.Cells(ultimalinha, 2).Value = txtnomes.text
Folha1.Cells(ultimalinha, 3).Value = txtapelidos.text
Folha1.Cells(ultimalinha, 4).Value = cmbposto.text
end sub
Sub Assistente
Dim ultimalinha As Long
ultimalinha = Folha2.Cells(65536, 2).End(xlUp).Row + 1
Folha2.Cells(ultimalinha, 2).Value = txtnomes.text 'coluna b = valor 2
Folha2.Cells(ultimalinha, 3).Value = txtapelidos.text 'coluna c = valor 3
Folha2.Cells(ultimalinha, 4).Value = cmbposto.text
end sub

Depois dentro do select case

Case Is = "chefe"

Call Chefe

Case Is = "assistentes"

Call Assistente

Nota, possivelmente este código não é a melhor maneira, e tenho algumas dúvidas com o teu select, mas desde que funcione....

edit: Em principio funciona, mas não o testei, escrevi directamente aqui

Boas sorte

Editado por Gnrtuga

Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.