Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
andre12345

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

Recommended Posts

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é

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 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é

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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é

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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é

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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é

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    André

    Eu não entendi o que você deseja fazer?

    Abs.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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é

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Boa noite André

    Fico contente que você tenha conseguido resolver a tua dúvida.

    Precisando retorne ao fórum.

    Um abraço.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Visitante
    Este tópico está impedido de receber novos posts.
    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×