Ir ao conteúdo
  • Cadastre-se

Excel VBA para inserir linha e copiar/colar arquivo


Posts recomendados

 

Boa tarde a todos!

 

Estou iniciando no VBA, e como muitos ja quero começar correndo e não engatinhando.

Quando você começa a conhecer o potencia da ferramenta, as possibilidades de melhorar o Lead time das suas atividades, começa a surgir algumas viagens. Segue abaixo a descrição do que necessito, e ficarei muito grato se conseguirem me ajudar. desde já agradeço.

 

Na aba "Cronogramas" existem varias linhas preenchidas e necessito de um botão com o nome "Criar Projeto" para que seja o gatilho de execução do código.

 

Esse código ateria que abrir um formulario, que perguntará em qual linha desejo acrescentar um novo projeto e que contenha ações básicas, como: cancelar/fechar, Criar.

Ex: após clicar no botão, será exibido: " Em qual linha deseja inserir um novo projeto?" Suponha que eu queira a linha 24. Clico no botão criar, e a macro vai até a aba "Modelo", copia da linha "A2:P23", e cola na linha indicada anteriormente, sem subscrever os dados que estarão nas linhas já preenchidas. Então seria acrescentar as celulas/linhas copiadas na aba "modelo" e colar na linha indicada anteriormente.

 

Era isso.

Fase pré avaliação - Teste1.xlsx

Link para o comentário
Compartilhar em outros sites

Cara, eu tive essa mesma necessidade que você há pouco tempo, mas estava usando uma aplicação em VB, e não o VBA, mas a lógica pode ser a mesma.

 

mantenha uma célula com o valor de linhas ocupadas do seu relatório. Inicialmente, quando não há nenhum projeto, o número de linhas ocupadas deve ser aquelas dos cabeçalhos e/ou qualquer outra coisa que ocupe linhas antes do lugar onde deve ser inserido o primeiro projeto.


Ex: se seu cabeçalho ocupa 5 linhas, a célula com as linhas ocupadas deve valer 5.

 

No meu caso, cada inserção ocupava 14 linhas, então toda vez que eu fazia essa inserção o próprio programa fazia


lin = Thisworkbook.Worksheets("Suaplanilhaaqui").range("A1").value 'número de linhas ocupadas
  
Thisworkbook.Worksheets("Suaplanilhaaqui").Range("A1") = lin + 14

Aí quando seu cliente clicar no botão "criar", a macro copia o template, seleciona a planilha correta, e cola:

 

ThisWorkbook.WorkSheets("SuaPlanilhaAqui").Cells(lin + 1, 2).select 'no lugar de 2 coloque o índice da coluna que você quiser
 ActiveSheet.Paste
 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Então cara... pensando aqui um pouco existem algumas maneiras de fazer o que você quer, mas para aprender VBA você vai ter que ir quebrando a cabeça. Se eu fizer pra você e te mandar você não vai aprender nunca.

 

Sugestão: Talvez você nem precise de um formulário, já que o form que você descreveu vai ter basicamente um input da linha e um botão...

 

Você pode gravar a macro normalmente usando o gravador do Excel mesmo. Você atribui essa macro a um botão. Depois você edita o código dessa macro, que vai estar escrito de modo a colar o modelo sempre na mesma célula, que é a célula que estava selecionada no momento da gravação. Aí você precisa fazer:

 

- declarar uma variável do tipo Range;

- atribuir a célula ativa à essa variável;

- copiar o modelo;

- selecionar a célula inicial que está gravada na variável;

-colar.

 

 

Eu estou anexando sua planilha com um exemplo que eu fiz. Tem um botão azul simples que vai copiar e colar um intervalo de células na célula que estiver selecionada antes do clique no botão. Aí você aproveita a ideia desse código e aplica no que você precisa.

Fase pré avaliação - Teste1.rar

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...