none
Colar fórmulas com macro RRS feed

  • Pergunta

  • Amigos,

    Esta pergunta é um tanto primitiva, porém não estou conseguindo avançar nesta tarefa e preciso da ajuda de vocês. Não consegui andar muito com os exemplos postados em outros tópicos (falha minha!) e resolvi escrever. La vai:

    Preciso criar uma planilha todos os dias, e como é aparentemente simples de fazer, resolvi automatizá-la através de uma macro. O problema descrevo abaixo:

    importar os arquivos txt --> ok;
    formatar --> ok
    colar fórmulas --> seria ok, se a plan fosse de tamanho fixo. Porém nunca é. Estive lendo uns tópicos aqui e o sábio Luiz Cláudio - MVP sugeriu sheet1.Range("B:B").Find (empty).Address.

    Como poderia então, utilizar este ou outro método para colar as formulas no final de cada linha preenchida?

    Esse é basicamente a minha dificuldade.

    Valeu.
    sexta-feira, 23 de janeiro de 2009 19:01

Respostas

  • Pessoal, aqui vai uma solução que talvez ajude a outros. Pra mim resolveu, porém, se houverem mais sugestões, aceito. Segue:

        Dim col As Integer 'Coluna que contém as fórmulas
        Dim row As Integer 'Ultima linha preenchida menos 1
        
        col = 13
        row = -1
            
        ActiveCell.Copy                                            'Contém a fórmula que tenho que colar para toda o range de dados
        Range(Range("A:A").Find(Empty).Address).Select    'Encontra a primeira linha vazia de uma coluna
        ActiveCell.Offset(row, col).Activate                           'Ativa a última linha preenchida do range
        Range(Selection, Selection.End(xlUp)).Select           'Seleciona todas as linhas do range
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Range("A1").Select


    Como número de colunas dificilmente mudará, achei um jeito de contornar minha questão:

    As linhas destacadas eram os meus problemas. Tinha que achar a última linha preenchida de um range dinâmico. Esse foi um jeito. Como falei, se algúem tiver alguma sugestão, aceito. Até porque não consegui resolver a seguinte questão: e se o número de colunas também for variável?

    Valeu.
    segunda-feira, 26 de janeiro de 2009 13:16

Todas as Respostas

  • Olá Otto Batista,

     

    Um dos métodos de encontrar a ultima linha preenchida, é este.

     

    Code Snippet

    Dim ws As Worksheet

    Dim ultimaLinha As Long

             

    Set ws = Worksheets("Registos")

    ultimaLinha = ws.Cells(65536, 1).End(xlUp).Row

     

     

     

    No entanto não sei bem como pretende e como é o seu ficheiro. Não pode dar mais detalhes ou mostrar um exemplo ?

     

     

     

     

     

     

     

                                                         

    Jorge Paulino

    http://vbtuga.blogspot.com/

    (VB.NET, ASP.NET, VB6 e VBA)

    domingo, 25 de janeiro de 2009 12:30
  • Pessoal, aqui vai uma solução que talvez ajude a outros. Pra mim resolveu, porém, se houverem mais sugestões, aceito. Segue:

        Dim col As Integer 'Coluna que contém as fórmulas
        Dim row As Integer 'Ultima linha preenchida menos 1
        
        col = 13
        row = -1
            
        ActiveCell.Copy                                            'Contém a fórmula que tenho que colar para toda o range de dados
        Range(Range("A:A").Find(Empty).Address).Select    'Encontra a primeira linha vazia de uma coluna
        ActiveCell.Offset(row, col).Activate                           'Ativa a última linha preenchida do range
        Range(Selection, Selection.End(xlUp)).Select           'Seleciona todas as linhas do range
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Range("A1").Select


    Como número de colunas dificilmente mudará, achei um jeito de contornar minha questão:

    As linhas destacadas eram os meus problemas. Tinha que achar a última linha preenchida de um range dinâmico. Esse foi um jeito. Como falei, se algúem tiver alguma sugestão, aceito. Até porque não consegui resolver a seguinte questão: e se o número de colunas também for variável?

    Valeu.
    segunda-feira, 26 de janeiro de 2009 13:16
  • Você fará o mesmo...Só que para a direita agora..

     

    Code Snippet
     Range(Selection, Selection.End(xlToRight)).Select

     

     

     

    Até..
    segunda-feira, 26 de janeiro de 2009 17:39