Usuário com melhor resposta
Colar fórmulas com macro

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 --> okcolar 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.
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órmulasDim row As Integer 'Ultima linha preenchida menos 1col = 13row = -1ActiveCell.Copy 'Contém a fórmula que tenho que colar para toda o range de dadosRange(Range("A:A").Find(Empty).Address).Select 'Encontra a primeira linha vazia de uma colunaActiveCell.Offset(row, col).Activate 'Ativa a última linha preenchida do rangeRange(Selection, Selection.End(xlUp)).Select 'Seleciona todas as linhas do rangeActiveSheet.PasteApplication.CutCopyMode = FalseRange("A1").SelectComo 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.
Todas as Respostas
-
Olá Otto Batista,
Um dos métodos de encontrar a ultima linha preenchida, é este.
Code SnippetDim 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
(VB.NET, ASP.NET, VB6 e VBA)
-
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órmulasDim row As Integer 'Ultima linha preenchida menos 1col = 13row = -1ActiveCell.Copy 'Contém a fórmula que tenho que colar para toda o range de dadosRange(Range("A:A").Find(Empty).Address).Select 'Encontra a primeira linha vazia de uma colunaActiveCell.Offset(row, col).Activate 'Ativa a última linha preenchida do rangeRange(Selection, Selection.End(xlUp)).Select 'Seleciona todas as linhas do rangeActiveSheet.PasteApplication.CutCopyMode = FalseRange("A1").SelectComo 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.
-