Pergunte aqui
1

Definir tempo/prazo para executar o macro!

perguntadas 2019-06-24 20:13:41 +0200

updated 2019-06-25 18:54:39 +0200

Olá pessoal!

Eu tenho uma macro que tem 2 passos!

Funciona assim:

Está escrito na imagem o que eu quero Descrição da imagem Segue o código:

Option Explicit

Public oPlanCalculadora As Object

Sub LimparDados()

    'base'
        oPlanCalculadora = ThisComponent.Sheets.GetByName("Calculadora")
    'objetos'
        If oPlanCalculadora.GetCellRangeByName("AD14").String = "Limpar dados" Then
            oPlanCalculadora.GetCellRangeByName("AD14").SetString("Tem certeza?")
            oPlanCalculadora.GetCellRangeByName("AC14").CellBackColor = RGB( 199,68,74 )

            'Eu quero que aqui, tenha um código que defina o prazo para apertar de novo:'
            'Por exemplo, a pessoa vai apertar e se estiver como "Limpar dados", vai aparecer "Tem certeza?"'
            'Se a pessoa não apertar de novo em 5 segundos, vai voltar para a configuração original, que é essa aqui:'
            ''
            'oPlanCalculadora.GetCellRangeByName("AD14").SetString("Limpar dados")'
            'oPlanCalculadora.GetCellRangeByName("AC14").CellBackColor = RGB( 197,200,198 )'

            Exit Sub
        End If

        If oPlanCalculadora.GetCellRangeByName("AD14").String = "Tem certeza?" Then
            oPlanCalculadora.GetCellRangeByName("AD14").SetString("Dados limpos!")
            oPlanCalculadora.GetCellRangeByName("AC14").CellBackColor = RGB( 154,168,58 )
        End If

            'Aqui eu quero que quando tudo for executado, depois de 10 segundos, volte para a configuração original'
            'É a mesma configuração original lá de cima:'
            ''
            'oPlanCalculadora.GetCellRangeByName("AD14").SetString("Limpar dados")'
            'oPlanCalculadora.GetCellRangeByName("AC14").CellBackColor = RGB( 197,200,198 )'
End Sub

O que eu quero, está escrito na imagem e no codigo!

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

imagem do gravatar de OlivierOlivier ( 2019-06-27 13:38:55 +0200 )editar

Eu li aqui amigo, creio eu que também funciona! Depois eu vou testar e comento aqui! Fica até com uma linha de codigo mais facil e curta!

imagem do gravatar de faelBrunnoSfaelBrunnoS ( 2019-06-28 19:18:26 +0200 )editar

1 Resposta

1

respondidas 2019-06-24 22:12:11 +0200

updated 2019-06-25 18:29:09 +0200

Já consegui fazer, o resultado foi o seguinte:

Descrição da imagem

Option Explicit

Public oPlanCalculadora As Object

Sub LimparDados()
    'Variáveis utilizados para as pausas'
    Dim TempoDePausa, Inicio

    'base'
        oPlanCalculadora = ThisComponent.Sheets.GetByName("Calculadora")
    'objetos'
        If oPlanCalculadora.GetCellRangeByName("AD14").String = "Limpar dados" Then
            oPlanCalculadora.GetCellRangeByName("AD14").SetString("Tem certeza?")
            oPlanCalculadora.GetCellRangeByName("AC14").CellBackColor = RGB( 199,68,74 )

            TempoDePausa = 5  ' Define a duração em segundos'
            Inicio = Timer    ' Define o tempo de inicio'

            Do While Timer < Inicio + TempoDePausa Loop

            If oPlanCalculadora.GetCellRangeByName("AD14").String = "Tem certeza?" Then
                oPlanCalculadora.GetCellRangeByName("AD14").SetString("Limpar dados")
                oPlanCalculadora.GetCellRangeByName("AC14").CellBackColor = RGB( 197,200,198 )
            End If
        End If

        If oPlanCalculadora.GetCellRangeByName("AD14").String = "Tem certeza?" Then
            oPlanCalculadora.GetCellRangeByName("AD14").SetString("Dados limpos!")

            oPlanCalculadora.GetCellRangeByName("AC14").CellBackColor = RGB( 154,168,58 )
        End If

        if oPlanCalculadora.GetCellRangeByName("AD14").String = "Dados limpos!" Then
            TempoDePausa = 10  ' Define a duração em segundos'
            Inicio = Timer    ' Define o tempo de inicio'

            Do While Timer < Inicio + TempoDePausa Loop

            If oPlanCalculadora.GetCellRangeByName("AD14").String = "Dados limpos!" Then
                oPlanCalculadora.GetCellRangeByName("AD14").SetString("Limpar dados")
                oPlanCalculadora.GetCellRangeByName("AC14").CellBackColor = RGB( 197,200,198)
            End If
        End If
End Sub

Espero que possa ajudar alguém!

editar assinalar como ofensivo Excluir Link mais
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2019-06-24 20:13:41 +0200

Lidas: 20 vezes

Última atualização: Jun 25