Ir ao conteúdo

Posts recomendados

Postado

Estou tentando criar um horímetro de produção mensal aqui na empresa, até o momento consegui criar apenas o diário, falta extender a macro para avançar nas colunas até completar os dias do mês.

Sub inicia_turno() 'INICIA TURNO MEIA NOITE
	Call Application.OnTime(TimeValue("00:00:00"), "zero_hora")
End Sub
Sub zero_hora() 'EXECUTA MACRO A CADA HORA
	Call Aplication.OnTime(TimeValue("01:00:00") + Now, "producao_ensacadeira")
End Sub
Sub producao_ensacadeira() 'ARMAZENA VALORES EM CADA LINHA E COLUNA COM SEUS RESPECTIVOS HORÁRIOS
	Dim planilha As WorkSheet
	Static linha As Integer
	Set planilha = WorkBook.Sheets("Plan1")
	linha = (linha Mod 23) + 1
	planilha.Cells(linha + 2, 2).Value = Planilha.[Z1].Value
	planilha.Cells(linha + 2, 1).Value = Format(Time, "hh:mm")
	Call zero_hora
Public Sub reset_variable(Optional reset As Boolean) ' LIMPA VARIÁVEL **linha** PARA EVITAR RETENÇÃO DE VALORES
	If reset Then
		linha = 0
	Exit Sub
End If
	If linha <> 1 Then
		linha = 0
End If
End Sub

Toda essa macro executa apenas um dia, estou precisando fazer com que todos os valores escritos na planilha permaneçam e sejam escritos os novos nas colunas seguintes. Alguém pode dá um help?

Postado

O que quer dizer com "avançar nas colunas"? Esse código só copia para as colunas 1 e 2, as proximas devem ser 3 e 4 e assim por diante? Se possível anexe um modelo de como está e mostre um exemplo de como deve ficar.

Postado

Uma forma que imagino é identificando a última coluna com dados para escrever na próxima a cada novo turno, p.ex,

 

Dim Coluna  As Integer
Dim Linha   As Long

Sub inicia_turno() 'INICIA TURNO MEIA NOITE
    Linha = 2
    If Cells(Linha + 1, 1) = "" Then
        Coluna = 1
    Else
        Coluna = Cells(Linha + 1, Columns.Count).End(xlToLeft).Column + 2
    End If
    Call Application.OnTime(TimeValue("00:00:00"), "zero_hora")
End Sub

Sub zero_hora() 'EXECUTA MACRO A CADA HORA
    Call Application.OnTime(TimeValue("01:00:00") + Now, "producao_ensacadeira")
End Sub

Sub producao_ensacadeira() 'ARMAZENA VALORES EM CADA LINHA E COLUNA COM SEUS RESPECTIVOS HORÁRIOS
    Dim Planilha As Worksheet
    
    Set Planilha = ThisWorkbook.Sheets("Plan1")
    Linha = (Linha Mod 23) + 1
    Planilha.Cells(Linha, Coluna + 1).Value = Planilha.[Z1].Value
    Planilha.Cells(Linha, Coluna).Value = Format(Time, "hh:mm")
    Call zero_hora
End Sub

 

Postado

@Jeff_Sandes Os comandos da Sub que atualiza os valores são suficientes. Talvez você não tenha testado direito. Crie uma planilha em branco e coloque algum valor na célula Z1. Rode a macro inicia_turno e deixe ela escrever alguns valores; Salve a planilha e feche; Abra e execute novamente a macro com os dados anteriores para ver que os novos valores serão escritos na próxima coluna.

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

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!