Usuário com melhor resposta
Variável com horas

Pergunta
-
Prezados,
Qual variável devo usar para horas? A variável que uso ("Double") retorna corretamente as horas, porém com o formato "Data e Horas". A fórmula matricial que uso nesta coluna de horas não funciona por causa do formato de "Data e Horas" na célula. Tentei mudar o formato, mas quando o código "roda" volta o mesmo formato.
Como resolvo esta questão?
Muito obrigado,
Marco.
Marco Antonio.
Respostas
-
Option Explicit Sub CALCULARTOTALDEVENDAS() Dim linha As Long Dim HorarioInicial, HorarioFinal, HoraAtual, DataAtual, DT As Date linha = 5 HorarioInicial = CDate(ThisWorkbook.Sheets("Demonstrativo").Range("E53")) HorarioFinal = CDate(ThisWorkbook.Sheets("Demonstrativo").Range("G53")) DT = CDate(ThisWorkbook.Sheets("Demonstrativo").Range("C53")) ThisWorkbook.Sheets("Demonstrativo").Range("I53").Value = 0 While ThisWorkbook.Sheets("Relatório").Cells(linha, 5) <> "" DataAtual = CDate(ThisWorkbook.Sheets("Relatório").Cells(linha, 4).Value) HoraAtual = Format(ThisWorkbook.Sheets("Relatório").Cells(linha, 5).Value, "hh:mm:ss") If DT = DataAtual Then If HoraAtual >= HorarioInicial Then If HoraAtual <= HorarioFinal Then ThisWorkbook.Sheets("Demonstrativo").Range("I53").Value = CDbl(ThisWorkbook.Sheets("Demonstrativo").Range("I53").Value + ThisWorkbook.Sheets("Relatório").Range("N" & linha).Value) End If End If End If linha = linha + 1 Wend linha = 5 DT = CDate(ThisWorkbook.Sheets("Demonstrativo").Range("C54")) HorarioInicial = CDate(ThisWorkbook.Sheets("Demonstrativo").Range("E54")) HorarioFinal = CDate(ThisWorkbook.Sheets("Demonstrativo").Range("G54")) ThisWorkbook.Sheets("Demonstrativo").Range("I54").Value = 0 While ThisWorkbook.Sheets("Relatório").Cells(linha, 5) <> "" DataAtual = CDate(ThisWorkbook.Sheets("Relatório").Cells(linha, 4).Value) HoraAtual = Format(ThisWorkbook.Sheets("Relatório").Cells(linha, 5).Value, "hh:mm:ss") If DT = DataAtual Then If HoraAtual >= HorarioInicial Then If HoraAtual <= HorarioFinal Then ThisWorkbook.Sheets("Demonstrativo").Range("I54").Value = CDbl(ThisWorkbook.Sheets("Demonstrativo").Range("I54").Value + ThisWorkbook.Sheets("Relatório").Range("N" & linha).Value) End If End If End If linha = linha + 1 Wend End Sub
Anderson Diniz diniabr2011@gmail.com
- Sugerido como Resposta AndersonFDiniz2 terça-feira, 14 de novembro de 2017 17:53
- Marcado como Resposta Marco1226 terça-feira, 14 de novembro de 2017 18:15
Todas as Respostas
-
Olá,
Fiz conforme você orientou, porém o formato da célula destino continua retornando o formato
"3/11/2017 11:48:48".
A fórmula que uso para calcular as vendas conforme o horário não funciona.
Qual seria a solução?
Grato.
Marco Antonio.
-
Não entendi. Por isso estou postando o código abaixo.
Grato.
Sub Gravar_Vendas()
Application.ScreenUpdating = False
Dim Data As Date
Dim Horario As Date
Dim Atendente As Integer
Dim NPedido As Double
Dim NCodigo As Double
Dim Descr As String
Dim Unidade As String
Dim quant As Double
Dim Desc As Double
Dim Preco As Double
Dim Total As Double
Dim UltimaCel As Integer
Dim QuantDados As Integer
Dim Linha As Integer
QuantDados = Sheets("Vendas").Range("E32").End(xlUp).Row
Linha = 17
While Linha < QuantDados + 1
Sheets("Vendas").Select
Data = Range("K7").Value
Horario = Range("K9").Value
NPedido = Range("K13").Value
Atendente = Range("F7").Value
NCodigo = Range("E" & Linha).Value
Descr = Range("F" & Linha).Value
Unidade = Range("G" & Linha).Value
quant = Range("H" & Linha).Value
Desc = Range("I" & Linha).Value
Preco = Range("J" & Linha).Value
Total = Range("K" & Linha).Value
Sheets("Relatório").Select
UltimaCel = Range("D65000").End(xlUp).Row + 1
Range("D" & UltimaCel).Value = Data
Range("E" & UltimaCel).Value = Horario
Range("F" & UltimaCel).Value = Atendente
Range("G" & UltimaCel).Value = NPedido
Range("H" & UltimaCel).Value = NCodigo
Range("I" & UltimaCel).Value = Descr
Range("j" & UltimaCel).Value = Unidade
Range("K" & UltimaCel).Value = quant
Range("L" & UltimaCel).Value = Desc
Range("M" & UltimaCel).Value = Preco
Range("N" & UltimaCel).Value = Total
Linha = Linha + 1
Wend
Sheets("Vendas").Select
MsgBox "Venda Gravada"
Selection.ClearContents
Range("Q20").Select
Application.ScreenUpdating = True
End SubMarco Antonio.
-
Boa tarde Anderson,
Efetuei as mudanças mas as células da coluna continham com o mesmo formato: "13/11/2017 15:34:28".
Como a fórmula matricial preciso somente das horas para calcular não está funcionando.
Abaixo os códigos com as alterações sugeridas por você:
Sub Gravar_Vendas()
Application.ScreenUpdating = False
Dim Data As Date
Dim Horario As Date
Dim Atendente As Integer
Dim NPedido As Double
Dim NCodigo As Double
Dim Descr As String
Dim Unidade As String
Dim quant As Double
Dim Desc As Double
Dim Preco As Double
Dim Total As Double
Dim UltimaCel As Integer
Dim QuantDados As Integer
Dim Linha As Integer
QuantDados = Sheets("Vendas").Range("E32").End(xlUp).Row
Linha = 17
While Linha < QuantDados + 1
Sheets("Vendas").Select
Data = Range("K7").Value
Horario = Range("K9").Value
Range("K9").NumberFormat = "h:mm:ss"
NPedido = Range("K13").Value
Atendente = Range("F7").Value
NCodigo = Range("E" & Linha).Value
Descr = Range("F" & Linha).Value
Unidade = Range("G" & Linha).Value
quant = Range("H" & Linha).Value
Desc = Range("I" & Linha).Value
Preco = Range("J" & Linha).Value
Total = Range("K" & Linha).Value
Sheets("Relatório").Select
UltimaCel = Range("D65000").End(xlUp).Row + 1
Range("D" & UltimaCel).Value = Data
Range("E" & UltimaCel).Value = Horario
Range("E" & UltimaCel).NumberFormat = "h:mm:ss"
Range("F" & UltimaCel).Value = Atendente
Range("G" & UltimaCel).Value = NPedido
Range("H" & UltimaCel).Value = NCodigo
Range("I" & UltimaCel).Value = Descr
Range("j" & UltimaCel).Value = Unidade
Range("K" & UltimaCel).Value = quant
Range("L" & UltimaCel).Value = Desc
Range("M" & UltimaCel).Value = Preco
Range("N" & UltimaCel).Value = Total
Linha = Linha + 1
Wend
Sheets("Vendas").Select
MsgBox "Venda Gravada"
Selection.ClearContents
Range("Q20").Select
Application.ScreenUpdating = True
End SubObrigado.
Marco.
Marco Antonio.
-
-
-
-
-
-
Option Explicit Sub CALCULARTOTALDEVENDAS() Dim linha As Long Dim HorarioInicial, HorarioFinal, HoraAtual, DataAtual, DT As Date linha = 5 HorarioInicial = CDate(ThisWorkbook.Sheets("Demonstrativo").Range("E53")) HorarioFinal = CDate(ThisWorkbook.Sheets("Demonstrativo").Range("G53")) DT = CDate(ThisWorkbook.Sheets("Demonstrativo").Range("C53")) ThisWorkbook.Sheets("Demonstrativo").Range("I53").Value = 0 While ThisWorkbook.Sheets("Relatório").Cells(linha, 5) <> "" DataAtual = CDate(ThisWorkbook.Sheets("Relatório").Cells(linha, 4).Value) HoraAtual = Format(ThisWorkbook.Sheets("Relatório").Cells(linha, 5).Value, "hh:mm:ss") If DT = DataAtual Then If HoraAtual >= HorarioInicial Then If HoraAtual <= HorarioFinal Then ThisWorkbook.Sheets("Demonstrativo").Range("I53").Value = CDbl(ThisWorkbook.Sheets("Demonstrativo").Range("I53").Value + ThisWorkbook.Sheets("Relatório").Range("N" & linha).Value) End If End If End If linha = linha + 1 Wend linha = 5 DT = CDate(ThisWorkbook.Sheets("Demonstrativo").Range("C54")) HorarioInicial = CDate(ThisWorkbook.Sheets("Demonstrativo").Range("E54")) HorarioFinal = CDate(ThisWorkbook.Sheets("Demonstrativo").Range("G54")) ThisWorkbook.Sheets("Demonstrativo").Range("I54").Value = 0 While ThisWorkbook.Sheets("Relatório").Cells(linha, 5) <> "" DataAtual = CDate(ThisWorkbook.Sheets("Relatório").Cells(linha, 4).Value) HoraAtual = Format(ThisWorkbook.Sheets("Relatório").Cells(linha, 5).Value, "hh:mm:ss") If DT = DataAtual Then If HoraAtual >= HorarioInicial Then If HoraAtual <= HorarioFinal Then ThisWorkbook.Sheets("Demonstrativo").Range("I54").Value = CDbl(ThisWorkbook.Sheets("Demonstrativo").Range("I54").Value + ThisWorkbook.Sheets("Relatório").Range("N" & linha).Value) End If End If End If linha = linha + 1 Wend End Sub
Anderson Diniz diniabr2011@gmail.com
- Sugerido como Resposta AndersonFDiniz2 terça-feira, 14 de novembro de 2017 17:53
- Marcado como Resposta Marco1226 terça-feira, 14 de novembro de 2017 18:15
-
-
Anderson,
Já resolvi a questão. Retirei dos códigos a questão das horas.
Criei outra macro retornando o horário na coluna de horas tendo com dependência a coluna de datas.
E para calcular as vendas usei uma fórmula matricial.
Deu certo.
Muito obrigado pela ajuda.
Marco Antonio.