• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

NunoPinto

Iniciar em vba

43 mensagens neste tópico

Bom dia.

Tenho necessidade de fazer várias aplicações de visual basic no excel!

Ainda sou um bocado inesperiente no tema.

Será que alguém me pode dar umas dicas de como começar?

O meu muito obrigado,

:wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece-me que este tópico não deveria estar aqui mas sim em dúvidas/Ajudas

A maneira mais simples de aprenderes é gravares macros com o que queres fazer e depois analizar o código gerado por essa macro.

também existe muita informação se pesquisares em "Excel VBA"

como por exemplo: www.excel-vba.com

Se fores mais específico no que queres fazer talvez te poderemos ajudar melhor

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom já agora vão uns exemplos muito simples

criar um livro

Set NovoLivro = Workbooks.Add
    With NovoLivro
        .Title = "Vendas"
        .SaveAs Filename:="Vendas.xls"
    End With

abrir um livro

Workbooks.Open("C:\Meus Documentos\vendas.xls")

gravar um livro

ActiveWorkbook.Save

abrir a primeira folha

Worksheets(1).Activate

abrir uma folha pelo nome

Worksheets("Sector1").Activate

Aceder a Células

Workbooks("Vendas").Sheets("Sector1").Range("A1:D5")

Aceder a células tendo como referência outras células

ActiveCell.Offset(1, 3)

introduzir formulas

Worksheets("Sector1").Range("D6").Formula = "=SUM(D2:D5)"

trabalhar com a célula activa

Worksheets("Sector1").Range("A1")Activate
    ActiveCell.Value = 35

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como posso por exemplo:

Crio um formulário!

Como vou buscar valores a folhas de excel, ou coloco dados nas folhas do excel.

Não sei se me fiz entender...

O meu muito obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Entras no Editor VB introduzes um UserForm, coloca-lhe uma caixa de texto e dois botões

depois na árvore esquerda escolhe EsteLivro ou ThisWorkbook, consoante tens o office em portuga ou inglês

colocas o seguinte código

Private Sub Workbook_Open()
UserForm1.Show

End Sub

isto faz com que o formulário abra quando se abre o livro

Depois do lado esquerdo novamente vês que o Excel criou uma pasta chamada Forms

abres-a e selecionas o formulário que foi criado

clica duas vezes sobre o primeiro botão e escreve o seguinte código


Worksheets("Folha1").Range("b1").Activate
    ActiveCell.Value = UserForm1.TextBox1.Text

atenção que o nome da folha poderá não ser Folha1 portanto muda-a se necessário

isto faz com que o valor que está na Textbox passe para a célula

agora volta ao formulário e clica no segundo botão e bota este código

Worksheets("Folha1").Activate

UserForm1.TextBox1.Text = Range("a1").Value

Isto faz com que o valor que está na célula a1 passe para a textbox (Convém que a célula a1 não esteja vazia  :cheesygrin:)

depois é só carregares no botão > para experimentar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma dica que te posso dar é fazer o que eu fiz para me desenrrascar pois tb já precisei de fazer alguas coiasas em VBA para a empresa onde trabalho.

Para saber como se usa determinado comando ou saber qual o comando que faz a acção X gravas uma macro á parte para fazer o que pretnedes e analizas. Pode parecer uma dica um bocado estupida de tão basica/simples que é, mas é só para deixar a ideia de que realmente dá jeito! :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pode parecer uma dica um bocado estupida de tão basica/simples que é, mas é só para deixar a ideia de que realmente dá jeito! :P

Não tem nada de estúpido nessa dica, o código gerado pelas macros pode auxiliar imenso, até os profissionais da coisa utilizam por vezes essa "técnica"  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu foi assim que aprend praticamente TUDO o pouco que sei de VBA tal como agora neste momento ando a aprender algo que se nao me engano é vbscript para usar nos emuladores de  dump terminals (AS/400 ou lá como é que se chama aquilo). Sei que é codo qq coisa como:

autECLSession.autECLPS.SendKeys "[pf3]"
autECLSession.autECLPS.SetCursorPos 2,57
x = inputbox ("ffdvb fd fdvbfd ")

:eek:

ainda não encarrilhei bem com aquilo, mas com o tempo vai lá! :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Então é assim:

Por exemplo tenho duas checkbox e seleccionando uma e quero que ela faça determinada acção, como posso fazer isso?

Por exemplo aparecer alguma informação numa combobox! como posso fazer isso?

Outra coisa:

Por exemplo num formulário:

Adicionar um nome!

Por exemplo tenho uma lista da a1 a a5 com nomes, quero adicionar outro! Como é que ele fica na posição a6 sem lhe dizer que é na a6! Pois este procedimento pode repetir-se n vezes!

Será que há algum sitio, que possa ver,  onde fique a conhecer as funções (exemplo caption, copy, ... )

Ou seja são as "ordens" que damos para fazer!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive a ver alguns livros!

Estive no site da FCA, e penso que esta lá um livro que para começar não é mau, pelo menos pelo que sei e vi no indice!

O livro é " Domine a 110% Excel 2003 ". Será que alguém me pode dar uma ideia se val a pena ou não para começar?

Muito obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive a ver alguns livros!

Estive no site da FCA, e penso que esta lá um livro que para começar não é mau, pelo menos pelo que sei e vi no indice!

O livro é " Domine a 110% Excel 2003 ". Será que alguém me pode dar uma ideia se val a pena ou não para começar?

Muito obrigado

O livro é um bom livro mas de VBA tem muito pouco

se já sabes mecher bem com o excel

mas valia da mesma editora Excel Macros & VBA Curso Completo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se alguem tiver mais algum site onde possa ir buscar mais informação sobre vba, agradeço.

O meu muito obrigado Icaro, pelo link. Dá muito jeito.

:wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se alguem tiver mais algum site onde possa ir buscar mais informação sobre vba, agradeço.

Isso também já é perguiça  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas tardes.

Então é o seguinte:

Estou a fazer um formulário em que a informação que lá tenho não dá para ficar toda visivel, ou seja tenho de inserir uma scrollbar!

De facto inserir a scroll bar já consegui, não consigo é que ela funcione!

Tipo queria defenir o tamanho da forme e depois ver o resto da informação com a scroll bar, será que dá?

O meu muito obrigado,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho outra duvida. É assim, no formulário que tenho repeten-se cerca de 10 linhas com 8 colunas os dados, ou seja o que demoro muito a colar os dados um a um, como posso fazer isso nem que não seja linha a linha?

Quem puder ajudar o meu muito obrigado,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mais uma vez cá estou com mais uma dúvida!

O problema da srolll bar já está resolvido!

Agora tenho outro problema que é o seguinte:

Quando inicio o livro que quero, queria que automaticamente inicia-se o formulário. Como posso fazer isso?

O meu muito obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no objecto EsteLivro:

Private Sub Workbook_Open()
UserForm1.Show

End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

criando uma macro

Tenho outra duvida. É assim, no formulário que tenho repeten-se cerca de 10 linhas com 8 colunas os dados, ou seja o que demoro muito a colar os dados um a um, como posso fazer isso nem que não seja linha a linha?

Quem puder ajudar o meu muito obrigado,

podes criar uma macro para isso

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:wallbash:

Bem, já tentei mas nada...

Só consegui de forma directa, mas deu algum trabalho, colar valores um a um!

Então é assim, eu tenho um formulário! Em que tem uma tabela para inserção de dados!

Depois quero que esses dados passem para o excel  por exemplo da coluna C à N e da linha 2 à  20! Por exemplo!...

:hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:wallbash:

Bem, já tentei mas nada...

Só consegui de forma directa, mas deu algum trabalho, colar valores um a um!

Então é assim, eu tenho um formulário! Em que tem uma tabela para inserção de dados!

Depois quero que esses dados passem para o excel  por exemplo da coluna C à N e da linha 2 à  20! Por exemplo!...

:hmm:

Bom meu caro 1º há que estabelecer em que linha os valores tem de ser introduzidos, para isso há que verificar se a primeira célula da linha tem algum valor ou não. Estabelecida a linha preenchemos os dados segundo as colunas desejadas.

Neste exemplo eu usei 11 textbox no formulário e um botão para submeter

isto aplica-se da célula d1-d100 a n1 - n100

Private Sub CommandButton1_Click()
' cria uma array que contenha todos os valores introduzidos nas text boxes senão teriamos de introduzir os valores há unha

Dim tx1(11) As String
tx1(0) = TextBox1.Text
tx1(1) = TextBox2.Text
tx1(2) = TextBox3.Text
tx1(3) = TextBox4.Text
tx1(4) = TextBox5.Text
tx1(5) = TextBox6.Text
tx1(6) = TextBox7.Text
tx1(7) = TextBox8.Text
tx1(8) = TextBox9.Text
tx1(9) = TextBox10.Text
tx1(10) = TextBox11.Text

' seleciona o livro com que queremos trabalhar
Application.ActiveWorkbook.Worksheets("Folha1").Select



'o valor y vai representar o número da linha
' vai descendo da célula d1 até d100 e para quando encontrar uma célula em branco
Dim y As Integer
For y = 1 To 100
Worksheets("Folha1").Cells(y, 4).Activate
If Application.ActiveCell.Text = "" Then

Exit For
End If
Next y

' agora que já temos a linha vamos preencer as colunas
Dim x As Integer
'0 a 10 porque só estamos a trabalhar com 11 colunas e porque vamos usar essa numeração com a array que começa a contar de 0
' caso contrário se usássemos de 1 a 11 não apreceria o valor da 1º caixa de texto e o excell daria erro porque não existe a 12 caixa de texto
For x = 0 To 10
Application.ActiveCell.Value = tx1(x)
Application.ActiveCell.Offset(0, 1).Activate
Next x

End Sub

Uma explicação mais detalhada em http://www.esparsos.net/index.php?topic=18.0

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigado pelo código, irei testar e veificar a funcionalidade.

O meu muito obrigado mais uma vez! Mas só uma dúvida no caso apresentado os valores das linhas são iguais em todas as linhas, os valores podem ser diferentes e funciona na mesma com este código? Se puderes responder na boa senão eu testo e depois digo alguma coisa.

As dúvidas não teimam em passar e surgiu outra:

Depois de utilizar o código para iniciar o formulário, quando se inicia o excel resutou na perfeição, mas tenho agora o problema de quando depois de iniciar o formulário e ir buscar outro, o primeiro fica lá.

Eu explico de outra forma:

Inicio o excel e abre o formulário A, depois de escolher uma opção nesse mesmo formulário abre o formulário B, mas o formulário A continua lá por trás do outro e eu queria que o mesmo desaparece-se!

Já tentei alguns comandos mas não consigo! Por vezes diz-me que não é possível fechar o formulário outras vezes o visualbasic não reconhece! Como posso ultrapassar isto?

Obrigado desde já, mais uma vez!

Obrigado por todas as informações.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É como eu digo, e para quem sabe deve ser muito fácil!

Quero guardar o ficheiro, consegui mas não da maneira que queria.

Utilizei o comando active workbook.saveascopy "nome_ficheiro" mas ele guarda nos meus documentos e eu queria que ele tipo abrisse uma janela para escolher onde guardar! Será possível

:wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigado pelo código, irei testar e veificar a funcionalidade.

O meu muito obrigado mais uma vez! Mas só uma dúvida no caso apresentado os valores das linhas são iguais em todas as linhas, os valores podem ser diferentes e funciona na mesma com este código? Se puderes responder na boa senão eu testo e depois digo alguma coisa.

Sim funciona com valores diferentes

As dúvidas não teimam em passar e surgiu outra:

Depois de utilizar o código para iniciar o formulário, quando se inicia o excel resutou na perfeição, mas tenho agora o problema de quando depois de iniciar o formulário e ir buscar outro, o primeiro fica lá.

Eu explico de outra forma:

Inicio o excel e abre o formulário A, depois de escolher uma opção nesse mesmo formulário abre o formulário B, mas o formulário A continua lá por trás do outro e eu queria que o mesmo desaparece-se!

Já tentei alguns comandos mas não consigo! Por vezes diz-me que não é possível fechar o formulário outras vezes o visualbasic não reconhece! Como posso ultrapassar isto?

Private Sub CommandButton2_Click()

formulárioA.Hide

formulárioB.Show

End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É como eu digo, e para quem sabe deve ser muito fácil!

Quero guardar o ficheiro, consegui mas não da maneira que queria.

Utilizei o comando active workbook.saveascopy "nome_ficheiro" mas ele guarda nos meus documentos e eu queria que ele tipo abrisse uma janela para escolher onde guardar! Será possível

:wallbash:

Private Sub CommandButton1_Click()

Dim nfich As String

    nfich = Application.GetSaveAsFilename(, "Livro Excel (*.xls),*.xls")

      If nfich = "False" Then Exit Sub

    ThisWorkbook.SaveAs sFileName

End Sub

0

Partilhar esta mensagem


Link 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