Usuário com melhor resposta
Inserindo dados no Excel

Pergunta
-
Prezados,
Criei um form em vba para alimentar uma planilha excel.
Uso o comando abaixo para que, o form procure no excel (em uma aba especifica) a primeira linha vazia e insira os dados preenchidos no form nela.
With Worksheets("Sheets1")
x= .UsedRange.Rows.Count + 1
.Cells(x, 1).Value = Textbox1.ValueEnd With
Acontece que com o codigo acima, se na linha a ser preenchida houver alguma celula com formula (=se, =somase, =procv, etc) o comando entende essa linha como "preenchida" e joga os dados do form para a linha subsequente.
Há algum outro comando que procure na planilha a primeira linha vazia e insira nela os dados do form, mesmo que haja nessa linha, alguma celula com formula.
O comando deve ignorar as formulas na celula (uma vez que não são dados) e preencher a linha com os dados do form.
Alguem me ajuda ?
Fabiano Lima
Respostas
-
With Worksheets("Sheets1").Columns("A") x = .Find(What:="*", After:=.Cells(1), SearchDirection:=xlPrevious, SearchOrder:=xlByRows, LookIn:=xlFormulas).Row + 1 End With 'ou With Worksheets("Sheets1") x = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 End With
Felipe Costa Gualberto - http://www.ambienteoffice.com.br- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 14 de junho de 2014 14:41
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 14 de junho de 2014 14:41
Todas as Respostas
-
Fabiano,
pra ser bem sincero não sei se há algum outro comando que ignore as fórmulas...o que vc pode fazer é um loop que percorrer célula por célula até encontrar a vazia, e pra isso pode usar a propriedade .Formula...entretanto, isso vai gerar mto processamento...
Como vc tah trabalhando com uma planilha banco de dados, acredito que há alguma coluna que não haja formula nenhuma, naum tem?
Se sim, vamos supor que ela seja a coluna E, ok?
Range("E65536").End(xlUp).Offset(1,0).Select
a linha de código acima vai selecionar a primeiro célula da coluna E que não tem fórmula...
Deu pra entender?
Analise cada caso e retorne os resultados,
Abraços,
-
Para verificar se isto te ajuda, faça este teste e verifique o resultado:
Public Sub TestaVal()
Dim strRange As RangeActiveSheet.Cells(1, 1).Select
ActiveSheet.Cells(2, 2).Value = 100
ActiveSheet.Cells(3, 2).Value = Now()
ActiveSheet.Cells(4, 2).FormulaR1C1 = "=IF(R[-2]C>50,1,2)"
Set strRange = Cells.SpecialCells(XlSpecialCellsValue.xlTextValues)
MsgBox strRange.AddressEnd Sub
Você obterá "$B$2
B$3", ou seja, vai contar a célula com valores e desprezar a célula que contém formula.
Abs,
-
Se possível envia por email a planilha rafa_hoffmann@hotmail.com
Rafael Hoffmann -
With Worksheets("Sheets1").Columns("A") x = .Find(What:="*", After:=.Cells(1), SearchDirection:=xlPrevious, SearchOrder:=xlByRows, LookIn:=xlFormulas).Row + 1 End With 'ou With Worksheets("Sheets1") x = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 End With
Felipe Costa Gualberto - http://www.ambienteoffice.com.br- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 14 de junho de 2014 14:41
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 14 de junho de 2014 14:41