Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda de VBA para um iniciante


Nightwing

Pergunta

Olá a todos,

(Quem não tiver paciência para ler, pode pular os dois primeiros parágrafos ;])

Venho aqui solicitar ajuda pra um problema que estou com relação ao trabalho. Sou estudante de engenharia civil e uma das muitas situações que encontro no dia-a-dia é a elaboração de listas de material para os custos de execução de projetos. Uma das centenas de itens que entram num tipo de lista como essa é o cálculo de volumes de concreto da obra, tarefa que quase sempre é feita manualmente. Além de ser trabalhosa e entediante, é extremamente suscetível a erros.

Então resolvi pesquisar pra criar um método que elimine esses problemas. Naturalmente, o Excel parece ser uma solução adequada. Logo que comecei a me aprofundar, vi que se eu fizesse sub-rotinas adequadas, a solução para tudo ficaria além de mais eficiente, mais elegante. Tenho noções de programação, porém nunca trabalhei antes com VBA. E é por isso que vim aqui, pois enquanto fuço a internet em busca de dicas e tutoriais pra aprender um pouco de VBA, quem sabe alguém não consegue me ajudar, afinal os clientes da empresa onde trabalho não ficarão sentados esperando eu aprender VBA =/

-------------------------------

Então vamos ao problema:

Pra ilustrar a situação: Pretendo criar num mesmo documento diversas planilhas, cada uma pra cada elemento de cálculo (fundações, vigas, pilares, etc) além, claro, de uma planilha com o resumo de tudo.

Usando um exemplo claro e simples:

imagem1awm.th.jpg

No caso, a planilha está feita para apenas uma fundação - Por enquanto, só textos. Depois que vou inserir as fórmulas pro cálculo automático dos volumes - mas um projeto comumente possui dezenas de fundações. Então o trabalho torna-se repetitivo, de copiar e colar as células a quantidade de vezes que for necessário pra chegar ao número de fundações do projeto.

Se eu, por exemplo, mudar o número de fundações pra 3, a planilha ficaria assim:

imagem2n.th.jpg

A pergunta é: Como faço pra toda vez que alterar o valor da quantidade de fundações (nesse exemplo, aquele valor na célula "F3") ele automaticamente gera a mesma quantidade de "campos" pra entrar com os dados pra cada fundação? É importante que caso se aumente a quantidade posteriormente, ele preserve os valores previamente digitados.

Outra pergunta (não tão importante quanto): É possível também caso se diminua a quantidade de fundações, que ele "suma" com os respectivos campos, mas se voltar atrás e adicionar ele volte com os valores que foram digitados previamente? Porque não sei se existe algum tipo de proteção pra que o valor do campo "quantidade" não seja alterado com um simples "esbarrar de tecla".

Desde já muito agradecido às pessoas que derem atenção ao meu pedido!

Abraços

PS1: Caso alguém possua uma ideia melhor (mais elegante, mais simples, etc) que o meu raciocínio, a sugestão será muito bem vinda.

PS2: Caso alguém conheça algo nesse estilo mais ou menos pronto, ou pelo menos discutido, aceito o aviso também. Como disse, ao mesmo tempo que estou aqui requisitando a ajuda, estou tentando aprender por conta própria.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Mexendo um pouco no Excel, vi que é possível uma formatação condicional.

Consegui fazer com que dependendo do número que eu informo como quantidade, ele "cria" aqueles campos referentes ao número de fundações, mas com 2 problemas:

1 - Só consegui fazer essa condição pra formatação da célula, mas não pro conteúdo dela.

2 - Só consegui fazer essa condição pra um número específico. No caso, eu teria de fazer uma condição pra cada quantidade de fundações (1, 2, 3, ..., n), o que, novamente, é repetitivo.

Mas levando isso tudo em conta, sei que o que estou querendo não deve ser tão difícil assim. Pelo menos se eu conseguisse "ver" o código que o Excel usa pra essa formatação condicional, por analogia eu poderia usando o editor VBA criar uma Sub pra um caso genérico, provavelmente inserindo tudo em um While.

-------------------------------------------------------------------------------------------------------

Um raciocínio que estou tentando trabalhar em cima:

modif = 1
While modif <= Range("f3").Value:
Range("b1").Value = modif
modif = modif + 1
Wend

Nesse caso, ele vai sempre substituindo o valor na mesma célula. Eu não sei como fazer pra ele ir sempre pulando uma célula pra baixo a partir de uma primeira que eu especifico, daí no caso ele sairia escrevendo assim:

1

2

3

.

.

n

Onde n é o valor da célula F3, que eu determino.

Alguma ajuda?

Link para o comentário
Compartilhar em outros sites

  • 0

cara não entendi nada do que você quer, seja mais específico.

no caso do código abaixo ele vai colocar o valor em "b1", afinal é isso que você está definindo. Se você está utilizando a variável modif para incrementar, você deverá utilizá-la para mudar de linha:

Dim modif as integer

modif = 1

While modif <= Range("f3").Value:

Range("b" & modif).Value = modif

modif = modif + 1

Wend

não sei se simplesmente isso te ajuda.

Editado por Renato Knupp
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...