Notifications
Clear all

Substituir Fórmula =($D$1-Q5) &"" por VBA

20 Posts
4 Usuários
5 Reactions
1,992 Visualizações
(@jcgmcs)
Posts: 69
Estimable Member
Topic starter
 

Olá boa tde..

Ajuda.. no Excel 2007

Na celula "D1" que é fixa, insiro uma Data Inicial qualquer e na coluna "Q" apartir da Linha 5, insiro a Data Final me retornando a contagem dos dias decorrentes em "P".

OBs: Na coluna "P" apartir da linha 5 tenho essa fórmula =($D$1-Q5) &"" que vae até à "P3000" 

Preciso que linhas da coluna "P" sejem preenchidas e atualizadas por VBA sempre que "D1" for alterado.

 

Obg.

Att, Carlos

 
Postado : 23/07/2020 2:48 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Carlos,

Bom dia!

Creio que você não precise de VBA para isso. Se as células da coluna P já possuem a fórmula e se a data da célula D1 for alterada, obviamente, as fórmulas atualizarão a contagem dos dias da coluna P. Estou correto?

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 24/07/2020 7:54 am
(@jcgmcs)
Posts: 69
Estimable Member
Topic starter
 

Bom dia..

Wagner preciso sim deste vba para outros objetivos...

 
Postado : 24/07/2020 8:19 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

@jcgmcs,

 

Boa noite!

Nesse caso, basta fazer assim:

For i = 5 to 3000

     Range("P" & i).FormulaLocal = "=($D$1-Q" & i & ") &""

Next i

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 24/07/2020 7:07 pm
(@jcgmcs)
Posts: 69
Estimable Member
Topic starter
 

Wagner boa tde..

Onde coloco o código, pois coloquei assim na Plan1(Teste) e está dando erro de definição de aplicativo ou de objeto.. Erro '1004'

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

For i = 5 To 3000

Range("P" & i).FormulaLocal = "=($D$1-Q" & i & ") &"""

Next i

End sub

Editado pela Moderação. Motivo: Utilize o botão Código (< >) para inserir código VBA ou Fórmulas.

 
Postado : 25/07/2020 2:14 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Carlos,

Nesse caso, a resposta é bem diferente. Inclusive, para utilizar com fórmula (como você quer) temos que utilizar um artifício para poder dar certo. No caso, estou usando esse artifício na célula G1 mas você pode usar qualquer outra célula vazia para isso. Basta alterar o código abaixo e substituir onde tem G1 para a célula que quiser. Na suposição que fiz, inserir apenas um espaço em branco em G1 e concatenei com a sua fórmula.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long

Application.EnableEvents = False

If Target.Count > 1 Then
Application.EnableEvents = True
Exit Sub
End If

If Target.Address(False, False) = "D1" Then
For i = 5 To 3000
Range("P" & i).FormulaLocal = "=($D$1 - Q" & i & ") & G1"
Next i
End If
Application.EnableEvents = True
End Sub

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 26/07/2020 11:03 am
(@jcgmcs)
Posts: 69
Estimable Member
Topic starter
 

Wagner bom dia..

Não entendi qdo vc disse que quero utilizar com essa formula: =($D$1-Q5) &""  ??

Eu quero é eliminar essa formula da coluna "P" e utilizar somente o código pra essa função.

Msm assim, fiz um teste com seu código e nada mudou ou aconteceu ao executá-lo...

Mas tdo bem, vamos esquecer essa formula =($D$1-Q5) &"" e vou simplificar...

Eu preciso de um código que subtraia e me retorne a contagem de dias na coluna "P". isso sempre que eu colocar apartir da linha 5 na coluna "Q" uma data qualquer, e assim, sendo tbém na "D1" colocando uma data qualquer... tdeu..

Obg..

 

 
Postado : 26/07/2020 12:21 pm
Weslei R.
(@weslei-r)
Posts: 10
Active Member
 

@jcgmcs Boa noite, tudo bem?
O código que você precisa, seria algo assim?

Sub CalculoDatas()
Dim datainicial As Date
Dim i As Integer
datainicial = Cells(1, 4)
Application.ScreenUpdating = False
For i = 5 To 3000
Cells(i, 16) = datainicial - Cells(i, 17)
Next i
Application.ScreenUpdating = False
MsgBox "Processamento Finalizado"
End Sub

Editado pela Moderação. Motivo: Utilize o botão Código (< >) para inserir código VBA ou Fórmulas.

Weslei Rodrigues de Souza

 
Postado : 26/07/2020 8:33 pm
jcgmcs reacted
(@jcgmcs)
Posts: 69
Estimable Member
Topic starter
 

@weslei-r Boa noite amigo..

Testei aki e ainda não foi o resultado esperado..

Primeiro que preciso do processo seje automático sempre que alterar data da "D1" ou da coluna "Q"

Na coluna "P" foi preenchida com este valor "44036" tdas as celulas até a linha 3000. Quero apenas onde for celula preenchida com a data que eu desejar tdeu..

OBs: Haverá celulas que por algum tempo permanecerão sem datas, então preciso que estas se mantém em branco ok!

Obg..

 
Postado : 26/07/2020 10:57 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

@jcgmcs,

Se você tivesse explicado desde o começo da forma que explicou por último, não teriam tantas respostas erradas. Já pensou nisso? Procure explicar as suas necessidades de ajuda de forma simples e objetiva amigo. Cada vez que você explica o código tem que ser diferente pois em programação os mínimos detalhes são importantes.

Segue novo código.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long

Application.EnableEvents = False

If Target.Count > 1 Then
Application.EnableEvents = True
Exit Sub
End If

If Target.Address(False, False) = "D1" Then
For i = 5 To 3000
Range("P" & i).Value = CDate(Range("D1").Value) - CDate(Range("Q" & i).Value)
Next i
ElseIf Target.Column = 17 And Target.Row > 4 Then
Range("P" & Target.Row).Value = CDate(Range("D1").Value) - CDate(Range("Q" & Target.Row).Value)
End If

Application.EnableEvents = True
End Sub

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 27/07/2020 7:40 am
jcgmcs reacted
(@jcgmcs)
Posts: 69
Estimable Member
Topic starter
 

@wagner bom dia..

Desculpe se falhei na clareza se assim for... Rss

Seu código agora funcionou.. mas ainda há um porém... Na coluna "P", onde celulas estão em branco, está exibindo este valor "44039" até a linha 3000. Gostaria de que, onde não há dados continuassem em branco até q for digitado uma data tdeu...

Uma outra Obs.. Minha coluna "Q" está formatada para dd/mm/aa ou seja, dia de hoje digito 27/07/20 mas na barra de formulas e em várias celulas estão exibindo 27/07/2020 e isso está me causando transtornos qdo faço uma pesquisa no Combobox.. se digito na pesquisa: 27/07/20 ele me trás uma lista, se digito: 27/07/2020 ele me trás uma outra lista tdeu... Tem como corrigir isso..?

Obg Wagner e ótima semana..

 
Postado : 27/07/2020 9:53 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

@jcgmcs

 

Acredito que no arquivo anexo os problemas estão corrigidos.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 27/07/2020 12:24 pm
jcgmcs reacted
(@jcgmcs)
Posts: 69
Estimable Member
Topic starter
 

Obg Wagner.. assim q possível verei aki.. Abç..

 
Postado : 27/07/2020 12:38 pm
(@jcgmcs)
Posts: 69
Estimable Member
Topic starter
 

Boa noite Wagner...

Ficou ótimo! Poré ainda tenho esse questão da formatação da coluna..

Minha coluna "Q" está formatada para dd/mm/aa ou seja, dia de hoje digito 27/07/20 mas na barra de formulas e em várias celulas estão exibindo 27/07/2020 e isso está me causando transtornos qdo faço uma pesquisa no Combobox ou até msm digitando diretamente na celula.. se digito na pesquisa: 27/07/20 ele me trás uma lista, se digito: 27/07/2020 ele me trás uma outra lista tdeu... Tem como corrigir isso..?

 
Postado : 27/07/2020 8:47 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

@jcgmcs,

Aí eu já não sei dizer como você resolver pois, como você pode verificar no arquivo que enviei, a minha formatação como dd/mm/aa, está correta. 27/07/20 não sai como 27/07/2020. Pelo menos aqui na minha máquina, com o meu Excel 2007 está corretíssimo. Veja imagem abaixo.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 28/07/2020 7:24 am
Página 1 / 2