Ir ao conteúdo
  • Cadastre-se

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


andre12345

Posts recomendados

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é

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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.

Link para o comentário
Compartilhar em outros sites

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é

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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...