Ir ao conteúdo

Posts recomendados

Postado

Preciso de uma ajuda para construir uma macro com os seguintes parâmetros:

 

O arquivo tem 2 planilhas, nominadas de "Indice" e "Historico"

Preciso que a macro execute a cada 1 minuto, copiando o intervalo F2:F76 (da plan "Indice"), para a plan "Historico", na coluna C2:C76...na proxima vez  que copiar, deverá colar na coluna subsequente, ou seja (D2:D76), e assim por diante...

 

Tentei com o seguinte código:

 

 

 

Public dTime As Date
Public st As Date

Sub Copia()
 If Time > #5:31:00 PM# Then Exit Sub
 dTime = Now() + TimeValue("00:01:00")
 Application.OnTime dTime, "Copia"
 ThisWorkbook.Sheets("Historico").Cells(ThisWorkbook.Sheets("Historico").Columns.Count, 1).Resize(1, 1).Value = _
 Array(Time, ThisWorkbook.Sheets("Indice").Range("F2:F76")).Copy
 ThisWorkbook.Sheets("Indice").Buttons("Botão 1").Caption = "PARAR"
End Sub

Sub IniciaParaReinicia()
 On Error Resume Next
 Application.OnTime dTime, "Copia", , False
 Application.OnTime st, "Copia", , False
 If ActiveSheet.Buttons(Application.Caller).Caption = "PARAR" Then
  ActiveSheet.Buttons(Application.Caller).Caption = "REINICIAR"
 ElseIf InStr(ActiveSheet.Buttons(Application.Caller).Caption, "INICIAR") > 0 Then
  ActiveSheet.Buttons(Application.Caller).Caption = "PARAR"
  Application.OnTime Application.Ceiling(Time, "00:01:00"), "Copia"
 End If
End Sub
 

Postado

@alexsilvamt Veja se desta forma ajuda,

 

Dim C   As Integer

Sub Copiar()
    Application.OnTime TimeValue("00:01:00") + Now, "Copiar"
    Worksheets("Indice").Range("F2:F76").Copy _
        Worksheets("Historico").Range("C2").Offset(0, C)
    C = C + 1
End Sub

 

  • Amei 1
Postado
  Em 12/05/2020 às 14:56, Muca Costa disse:

Veja se o anexo lhe ajuda...

CopiarColunaPorTempo.rar 20 kB · 1 download

Expandir  

Faltou citar que no range de origem, os dados copiados são funções matemática (formulas), sendo que na celula de destino a ser copiados, o dados tem que ser colados como numero, pois senão, retornam msg de erro, face a referencia de origem

Postado

   Substitua:

    ActiveSheet.Paste

    Columns(x & ":" & x).EntireColumn.AutoFit

    Range(x & "1").Select

   

 

    Por:  

    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

        xlNone, SkipBlanks:=False, Transpose:=False

    Columns(x & ":" & x).EntireColumn.AutoFit

    Application.CutCopyMode = False

    Selection.NumberFormat = "0.00"

    Range(x & "1").Select

  • Amei 1
Postado
  Em 12/05/2020 às 16:22, Muca Costa disse:

   Substitua:

    ActiveSheet.Paste

    Columns(x & ":" & x).EntireColumn.AutoFit

    Range(x & "1").Select

   

 

    Por:  

    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

        xlNone, SkipBlanks:=False, Transpose:=False

    Columns(x & ":" & x).EntireColumn.AutoFit

    Application.CutCopyMode = False

    Selection.NumberFormat = "0.00"

    Range(x & "1").Select

Expandir  

Como na origem, os  dados estão no intervalos ("F2:F76"), gostaria que os dados fosse colados no destino, tambem a partir da linha 2 de cada coluna, visto que a inha 1 é cabeçalho.. atualmente a macro esta colando, mas a partir da linha 1 no destino... Qual código que tenho que alterar paraa conseguir isso???

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!