Usuário com melhor resposta
FormulaR1C1 - Inserir fórmula em célula a partir do VBA

Pergunta
-
Prezados Desenvolvedores:
Preciso imprimir um planilha que contem várias folhas, cujo número de linhas por folha e alterado de acordo com o texto a ser inserido em cada uma delas. Portanto, uma folha pode apresentar como última linha "46", "47" ou "48", etc...
Na última linha da primeira folha vou inserir um "SUBTOTAL A TRANSPORTAR". Na primeira linha da segunda folha vou inserir "SUBTOTAL DE TRANSPORTE" e, assim sucessivamente até a última folha.
Através do código abaixo consegui inserir o SUBTOTAL corretamente.
Set ValorPrincipal = Worksheets(strDtInicial).Range("E133:E" & UltimaLinha) Subtotal_ValorPrincipal = Application.WorksheetFunction.Sum(ValorPrincipal) Worksheets(strDtInicial).Range("E" & UltimaLinha).Value = Subtotal_ValorPrincipal
Entretanto, se for necessário fazer alteração nos valores, o SUBTOTAL não se altera, ou seja, não é recalculado automaticamente. Isto porque, na célula que introduzi o SUBTOTAL através do código citado não foi incluída fórmula do excel.
Estou tentando alterar o código para o seguinte:
Row = UltimaLinha - 133 Range("E" & UltimaLinha).Select ActiveCell.FormulaR1C1 = "=SUM(R[-41]C:R[-1]C)"
Através desse código é inserido a fórmula do excel na célula respectiva e, caso seja efetuada alteração nos valores da planilha o SUBTOTAL é recalculado automaticamente.
Entretanto, como o valor da ultima linha não é constante, tenho que alterar o código para substituir o valor da última linha [-41] pelo valor da variável Row, porém não estou conseguindo.
Preciso de ajuda para a solução de citado problema.
Muito Obrigado!
- Editado Luiz Henrique da Costa Jardim quinta-feira, 23 de julho de 2009 23:51
quinta-feira, 23 de julho de 2009 23:47
Respostas
-
Ops...Houve um erro de sintaxe....
Coloque desta forma aqui:
ActiveCell.Formula = "=SUM(E133:E" & UltimaLinha & ")"
[ ]s
Adilson Soledade - MOS- Marcado como Resposta Luiz Henrique da Costa Jardim sábado, 25 de julho de 2009 13:25
sábado, 25 de julho de 2009 11:48
Todas as Respostas
-
Experimente inserir a fórmula deste modo:
ActiveCell.Formula = "=SUM("E133:E" & UltimaLinha & ")"
[ ]s
Adilson Soledade - MOSsexta-feira, 24 de julho de 2009 09:15 -
Boa Tarde Adilson.
Muito Obrigado pela sua atenção, mas infelizmente não deu certo.
O VB não aceitou a linha de código. Quando a inseri ela ficou "VERMELHA" e apareceu mensagem de erro de aplicativo.
Tentei utilizar a sua idéia e implementei várias alteracões e, mesmo assim, não consegui.
Muito Obrigado!sexta-feira, 24 de julho de 2009 17:45 -
Ops...Houve um erro de sintaxe....
Coloque desta forma aqui:
ActiveCell.Formula = "=SUM(E133:E" & UltimaLinha & ")"
[ ]s
Adilson Soledade - MOS- Marcado como Resposta Luiz Henrique da Costa Jardim sábado, 25 de julho de 2009 13:25
sábado, 25 de julho de 2009 11:48 -
Maravilha! Perfeito!
Muito Obrigado.
sábado, 25 de julho de 2009 13:26 -
Não tem de quê.
[ ]s
Adilson Soledade - MOSquinta-feira, 30 de julho de 2009 01:46 -
Olá,
Estou criando uma macro pra atualizar meus vinculos automaticamente, em 720 linhas, o vinculo é este:
=SEERRO(PROCV(A22;'C:\MEMORIA_CALCULO\LOTE_03_OUTUBRO\[LOTE 03S CT.066-10 MED.xlsm]MEDIÇÃO 11'!$A$16:$Q$2000;2;FALSO);"")
Pra inserir o vinculo em todas as linhas a que eu quero, a macro ja ta pronta, é esta:
Sub Insere_Formula() Dim i As Range Dim Valores As String Dim Conta_Planilha As Integer Dim Nome_Planilha As String For Conta_Planilha = 1 To 1 'Sheets(Conta_Planilha).Select Nome_Planilha = Sheets(Conta_Planilha).Name MsgBox "Nome da Planilha : " & Nome_Planilha Sheets(Conta_Planilha).Select For Each i In Range("E23:E24") If i.Value <> Empty Then Valores = i.Offset(rowOffset:=0, columnOffset:=-3).Value '----- insere formula ---' 'ActiveCell.FormulaR1C1 = "=IF(LEFT('Croqui v1'!R[-1]C[29],2)=""TR"",'Croqui v1'!R[-1]C[29],"" "")" 'ActiveCell.FormulaR1C1 = "=SEERRO(PROCV(A22;'C:\MEMORIA_CALCULO\LOTE_03_OUTUBRO\[LOTE 03S CT.066-10 MED.xlsm]MEDIÇÃO 11'!$A$16:$Q$2000;2;FALSO);"")" MsgBox "Valores são " & Valores '------------------------' End If Next i Next Conta_Planilha End Sub
esta linha não funciona:
ActiveCell.FormulaR1C1 = "=SEERRO(PROCV(A22;'C:\MEMORIA_CALCULO\LOTE_03_OUTUBRO\[LOTE 03S CT.066-10 MED.xlsm]MEDIÇÃO 11'!$A$16:$Q$2000;2;FALSO);"")"
q é a linha q insere a formula com Procv, nas 720 linhas q preciso. Alguem sugere uma outra forma de fazre isso?
E ja que estou aqui, o excel pede pra atualizar o link a cada mudança, tem como desativar isso somente na hora q estou trocando os links e ativar depois atualização dos links?
Desde já agradeço
Anderson Dornelesquinta-feira, 27 de outubro de 2011 20:47 -
como fazer com q a célula receba =SE(D2<>"";SE(O2<>"Baixado";HOJE()-D2;P2-D2);"-")
estou usando o as seguintes instruções...
rowcount = Worksheets("impressas").Range("a1").CurrentRegion.Rows.Count
With Worksheets("impressas").Range("a1")
.Offset(rowcount, 0).Value = Me.trfa.Value
.Offset(rowcount, 16).Value = Application.ActiveCell.FormulaR1C1 = _
"=IF(RC[-13]<>"""",IF(RC[-2]<>""Baixado"",RC[-13]-TODAY(),RC[-13]-RC[-1]),""-"")"
Sheets("Aut.Coleta").Select
End Withporem na planilha a celula esta recebendo = "FALSO"
sexta-feira, 20 de junho de 2014 17:43 -
Adailton,
Continuação do tópico em: http://social.msdn.microsoft.com/Forums/pt-BR/fa498da9-348f-403b-ae96-09889bde84db/offsetrowcount-1valueformula-se?forum=vbapt
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
sexta-feira, 20 de junho de 2014 21:53Moderador