locked
Macro em Excel RRS feed

  • Pergunta

  • Olá, preciso tirar uma dúvida sobre como gravar uma macro.
    É o seguinte: 

    Estou com uma planilha com várias Guias e preciso criar uma macro para inserir uma linha e nesta linha inserir em cada coluna valores e fórmulas. 
    Acontece que já tentei fazer a macro, deu certo até certo ponto, pois as guias não obececem o nº de linhas, ou seja, numa guia vou executar a macro na linha "A67" cujas formlulas pegam valores da linha A66, só que na outra Guia a linha onde vou executar a macro é a A87 por exemplo.
    Como eu poderia gravar a macro para que ela entenda a celula que estou colocando?

    A Macro:

    Sub DecimoTerceiro()
    '
    ' DecimoTerceiro Macro
    ' Macro gravada em 18/10/2009 por Admin
    '

    '
    Range("A66:G66").Select
    Selection.Copy
    Range("A67").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("A67").Select
    ActiveCell.FormulaR1C1 = "13º Prp"
    Range("B67").Select
    Selection.ClearContents
    ActiveCell.FormulaR1C1 = "=R[-2]C/12*R[-66]C[13]"
    Range("G68").Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-62]C:R[-1]C)"
    Range("A67").Select
    End Sub


    obs: O range das celulas são as mesmas colunas porém linhas diferentes, como posso fazer uma macro onde possa utilizar para todas as guias
    domingo, 18 de outubro de 2009 16:39

Todas as Respostas

  • Olá Rosa você consegue disponibilizar o seu arquivo na WEB, para poder te ajudar melhor?

     

    Abraços,


    Baldini Fabio
    • Sugerido como Resposta Baldini domingo, 23 de maio de 2010 04:56
    domingo, 23 de maio de 2010 04:56
  • Olá amigos,

     

    Estou com um problema similar e preferi não fazer uma nova pergunta...

    é o seguinte.. tenho uma macro(abaixo) que seleciona algumas células e envia a infomação por e-mail.

    Até aí tudo bem, gostaria de saber se ao invés de usar um valor fixo como ActiveSheet.Range("E15:M35").Select, deixar que o usuario selecione os campos desejados.

    Alguém sabe como fazer algo similar a isso?

    Desde já agradeço o help!

    Sub Envio_Email()
           
    Sheets("4- PROGRAMAÇÃO").Activate
    ActiveSheet.Range("E15:M35").Select
      
       ActiveWorkbook.EnvelopeVisible = True

       With ActiveSheet.MailEnvelope
          .Introduction = "Material teste" & vbTab & Time
          .Item.To = "meu-mail"
          .Item.Subject = "Teste e-mail excel"
          .Item.Send
       End With
    End Sub

    sexta-feira, 28 de maio de 2010 21:47
  • Olá Rosa para aplicar em todas as planilhas segue o código abaixo

    Sub DecimoTerceiro()
        For Each Plans In ThisWorkBooks.Sheets
            Plans.Activate
       
            Range("A66:G66").Copy
            Range("A67").Paste
            Range("A67").FormulaR1C1 = "13º Prp"
            Range("B67").ClearContents
            Range("B67").FormulaR1C1 = "=R[-2]C/12*R[-66]C[13]"
            Range("G68").FormulaR1C1 = "=SUM(R[-62]C:R[-1]C)"
            Range("A67").Select
        Next
    End Sub


    Baldini Fabio
    • Sugerido como Resposta Baldini sábado, 29 de maio de 2010 05:36
    sábado, 29 de maio de 2010 04:27
  • Ola Rosa como vai

    Esta faltando algumas informações no seu VBA, sobre deixar fixo o "ActiveSheet.Range("E15:M35").Select" apenas seleciona o intervalo desejado e mais nada, é necessário que o usuário digite em algum lugar da sua planilha os dados como email, Assunto e Corpo, ou em um Userform.

    Abraços,


    Baldini Fabio
    • Sugerido como Resposta Baldini sábado, 29 de maio de 2010 05:36
    sábado, 29 de maio de 2010 04:30
  • Eu faria da seguinte forma:

        Range(Selection, Selection.End(xlToLeft)).Select    'Seleciona a partir da coluna A até onde tiver números em sequência na linha (qq linha)
        Selection.Copy   'Copia a seleção
        Selection.Offset(1, 0).Select   'Desce uma linha
        Selection.Paste   'Cola

    Espero ter ajudado de alguma forma.

    domingo, 6 de junho de 2010 09:01