Ir ao conteúdo

EXCEL- Fixar data "=AGORA()" em fução de um critério


andre12345

Posts recomendados

Postado

Alguém pode me ajudar com o excel?

Exemplo:

Tenho na célula A1 a fórmula: =HOJE()

Na B1: =se(AA1>100;1;0)

Na C1: preciso algo do tipo: =se(B1=1;A1;””) Entretanto o resultado da DATA não poderia mais ser alterada “NA VIRADA DO DIA”, teria que se manter inalterada no momento que for validado que B1=1.

Grato,

André

Postado

Bom dia Patropi,

Eu dei uma olhada, o macro está executando ctrl C e ctrl V? Testei alterando a data do sistema operacional e não deu certo, quando altera o dia ele executa novamente o macro e C1 fica igual a A1 novamente.

Sabe como solucionar?

Obrigado,

André

Postado

Boa tarde Patropi,

Se o procedimento do macro é ctrl C e ctrl V. Trocando o ctrl V por “colar especial/ valores e formatos de números” pode dar certo? Se acredita que sim! Sabe como alterar no macro?

Um abraço,

André

  • Membro VIP
Postado

Boa tarde

Um código como você sugeriu seria mais menos assim:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("B1").Value = "1" Then
Application.EnableEvents = False
Range("A1").Select ' Celula a ser copiada
Selection.Copy
Range("C1").Select ' Celula de destino
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End If
End Sub

Eu não testei pois onde estou não tem Office, e além disso sou iniciante em VBA e consequentemente, o código pode precisar de algum ajuste.

Um abraço.

Postado

Boa Tarde Patropi,

Eu sou totalmente leigo em VBA e macro! Como crio o macro com as novas instruções que você enviou? Não consigo visualizar o macro na planilha que você fez, pra ter como exemplo.

Obrigado,

André

  • Membro VIP
Postado

Boa tarde André

Para você ver a macro que eu coloquei na tua planilha, basta você clicar com o lado direito do Mouse na Aba da Planilha, que fica embaixo e esta com o nome Plan1, e selecione Exibir código.

Neste mesmo local você pode apagar o código que esta lá e copiar/colar o novo código.

Para sair do editor de VBA é só clicar em ALT+Q

Um abraço.

Postado

Boa noite Patropi,

Ok!!! Obrigadão pela ajuda.

Sem querer abusar, mas.... Para estender para as outras células das colunas? Devo substituir ex: (“A1”) por?

Um grande abraço,

André

Postado

Bom dia Patropi,

O macro só está checando =se(B1=1;”copia em A1 e cola em C1”). Certo?

Gostaria de estender (“copiar o macro”) para outras linhas ex: =se(B2=1;copia em $A$1 e cola em C2”), e assim por diante ($A$1,B3 e C3...).

No macro as células estão restritas a linha 1: (“A1”), (“B1”) e (“C1”). Já tentei alterar no macro para (“B1:B100”) e (“C1:C100”) mas não funcionou.

Um abraço,

André

  • Membro VIP
Postado

Bom dia André

Aí já complica, pois não é só alterar os intervalos como você fez, e como eu te disse eu sou iniciante em VBA.

Deixo para os feras em VBA resolverem a tua dúvida.

Um abraço.

  • Membro VIP
Postado

Veja se ajuda... Se entendi bem, acho que é isto que você deseja

for linha = 1to 100

If Range("B"&linha).Value = "1" Then

Application.EnableEvents = False

Range("A" & linha).Select ' Celula a ser copiada

Selection.Copy

Range("C" & linha).Select ' Celula de destino

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Application.CutCopyMode = False

End If

next linha

Postado

Boa tarde Patropi,

Primeiramente, obrigado por sua atenção!

Abaixo segue o código do qual eu preciso.

Um grande abraço,

André

Código:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim celulaOrigem As String

Dim colunaDestino As String

Dim colunaCondicional As String

Dim colunaCondicionalNumero As String

Dim condicao As String

Dim column As String

'#############################################

'########## PARÂMETROS DE ENTRADA ############

'#############################################

celulaOrigem = "A1"

colunaDestino = "C"

colunaCondicional = "B"

condicao = "1"

'#############################################

'#############################################

'#############################################

For Each cell In Target

column = Mid(cell.Address, InStr(cell.Address, "$") + 1, InStr(2, cell.Address, "$") - 2)

If column = colunaCondicional Then

copyCells celulaOrigem, colunaDestino, cell.Row, cell.Row, colunaCondicional, condicao

End If

Next cell

End Sub

Private Sub copyCells(ByVal sourceCell As String, ByVal destinationColumn As String, ByVal startLine As Integer, ByVal endLine As Integer, ByVal conditionColumn As String, ByVal condition As String)

Dim i As Integer

Dim destinationCell As String

Dim conditionCell As String

For i = startLine To endLine

destinationCell = destinationColumn & i

conditionCell = conditionColumn & i

If Range(conditionCell).Value = condition Then

Range(sourceCell).Copy

Range(destinationCell).PasteSpecial

Else

Range(destinationCell).Value = ""

End If

Next i

End Sub

Private Function getColumnChar(ByRef cell) As String

Dim MyColumn As String, Here As String

Here = cell.Address

MyColumn = Mid(Here, InStr(Here, "$") + 1, InStr(2, Here, "$") - 2)

getColumnChar = MyColumn

End Function

Postado

Ops!!!!

Corrigindo pessoal! Segue abaixo com a correção de colar “simples” para “colar especial”.

Essa ficou legal porque que é só trocar os parâmetros que estão em verde entre os “******” e adaptar em qualquer situação.

Valeu!!! Flavio Soares.

Valeu!!! Patropi.

Um abraço,

André

Private Sub Worksheet_Change(ByVal Target As Range)

Dim celulaOrigem As String

Dim colunaDestino As String

Dim colunaCondicional As String

Dim colunaCondicionalNumero As String

Dim condicao As String

Dim column As String

'#############################################

'########## PARÂMETROS DE ENTRADA ############

'#############################################

celulaOrigem = "A1"

colunaDestino = "F"

colunaCondicional = "B"

condicao = "1"

'#############################################

'#############################################

'#############################################

For Each cell In Target

column = Mid(cell.Address, InStr(cell.Address, "$") + 1, InStr(2, cell.Address, "$") - 2)

If column = colunaCondicional Then

copyCells celulaOrigem, colunaDestino, cell.Row, cell.Row, colunaCondicional, condicao

End If

Next cell

End Sub

Private Sub copyCells(ByVal sourceCell As String, ByVal destinationColumn As String, ByVal startLine As Integer, ByVal endLine As Integer, ByVal conditionColumn As String, ByVal condition As String)

Dim i As Integer

Dim destinationCell As String

Dim conditionCell As String

For i = startLine To endLine

destinationCell = destinationColumn & i

conditionCell = conditionColumn & i

If Range(conditionCell).Value = condition Then

Range(destinationCell) = Range(sourceCell)

Range(destinationCell).NumberFormat = "dd/mm/yyyy"

Else

Range(destinationCell).Value = ""

End If

Next i

End Sub

Private Function getColumnChar(ByRef cell) As String

Dim MyColumn As String, Here As String

Here = cell.Address

MyColumn = Mid(Here, InStr(Here, "$") + 1, InStr(2, Here, "$") - 2)

getColumnChar = MyColumn

End Function

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...