Jump to content
  • 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

Recommended Posts

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

Share this post


Link to post
Share on other sites
acao

boas

tens que colocar o select das páginas antes de passar os valores da txtbox para as células.

cumps

acao

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.. :)

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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

Edited by 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.. :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.