Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Dias Uteis entre duas Datas [RESOLVIDO]
- Marcus Bull
- Colaborador
- Mensagens: 40
- Registrado em: Qua Mai 09, 2012 8:31 am
Dias Uteis entre duas Datas [RESOLVIDO]
Boa noite,
Preciso saber os dias uteis ente duas datas sendo :
txt_DataCadastro (onde digito no formulário) e a outra data seria a data do dia para saber qtos dias transcorreram a cada consulta.
tentei usar assim :
mDias = CDate(txt_DataCadastro.Value) - Weekday(Now().Value), mas não funcionou.
Alguem pode me ajudar
Obrigado..
Preciso saber os dias uteis ente duas datas sendo :
txt_DataCadastro (onde digito no formulário) e a outra data seria a data do dia para saber qtos dias transcorreram a cada consulta.
tentei usar assim :
mDias = CDate(txt_DataCadastro.Value) - Weekday(Now().Value), mas não funcionou.
Alguem pode me ajudar
Obrigado..
Editado pela última vez por Marcus Bull em Sex Out 31, 2014 9:55 am, em um total de 1 vez.
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Dias Uteis entre duas Datas
A função weekDay, em português corresponde à função dia.da.semana, retorna o numero referente ao dia da semana em uma determinada data.
Se desejar a diferença de dias entre duas datas no VBA pode utilizar:
Assim terá o numero de dias entre duas datas, incluindo sábado/domingo/feriado.
Se o objetivo for desconsiderar final de semana e feriado, como a função diatrabalhototal (networkdays) não é reconhecida no vba, pode-se utilizar assim:
Onde O1:O12 corresponde a range com os feriados, e A1 uma celula qualquer para o calculo da função na planilha
Eventualmente se preferir, pode utilizar a UDF proposta em http://www.cpearson.com/excel/betternetworkdays.aspx
Se desejar a diferença de dias entre duas datas no VBA pode utilizar:
Código: Selecionar todos
nDias=Date-Cdate(txt_DataCadastro.text)
Se o objetivo for desconsiderar final de semana e feriado, como a função diatrabalhototal (networkdays) não é reconhecida no vba, pode-se utilizar assim:
Código: Selecionar todos
Dim nDias As String
nDias = "01/05/2014"
Range("A1").FormulaLocal = "=DIATRABALHOTOTAL(data.valor(""" & nDias & """);Hoje();o1:o12)"
nDias = Range("A1").Value
MsgBox nDias
Range("a1") = ""
Eventualmente se preferir, pode utilizar a UDF proposta em http://www.cpearson.com/excel/betternetworkdays.aspx
- Marcus Bull
- Colaborador
- Mensagens: 40
- Registrado em: Qua Mai 09, 2012 8:31 am
Re: Dias Uteis entre duas Datas
Olá Rmarco
O objetivo mesmo é desconsiderar final de semana e feriados, seria possível adaptar para essa rotina ?
Private Sub btn_Cadastrar_Click()
If txt_NomeAluno = "" Or txt_DataCadastro = "" Then
Me.txt_Protocolo.BorderColor = &HFF&
Me.txt_DataCadastro.BorderColor = &HFF&
Me.txt_NomeAluno.BorderColor = &HFF&
Me.txt_Matricula.BorderColor = &HFF&
MsgBox "Campos em DESTAQUE são obrigatórios", vbCritical, Soft
Unload Me
Form_SEEDUC.Show
End If
'Exit Sub
Dim ID As Long
Dim NomeAluno As String
Dim Matricula As String
Dim Protocolo As String
Dim Dias As String
Dim Solicitacao As String
Dim resposta As String
Dim status As String
Dim xATV As String
Plan11.Activate
Range("A1048576").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
Dim Data As String
Dim linha As Long
ID = txt_id
Me.Chk_Pendente = 0
Matricula = txt_Matricula
NomeAluno = txt_NomeAluno
Data = txt_DataCadastro
Protocolo = txt_Protocolo
Solicitacao = Txt_Solicitacao
resposta = Txt_Resposta
linha = Range("A" & Rows.Count).End(xlUp).Row + 1
xATV = "N": If Me.Chk_Pendente = 0 Then xATV = "S"
Cells(linha, 1) = ID
Cells(linha, 2) = xATV
Cells(linha, 3) = Protocolo
Cells(linha, 4) = Data
Cells(linha, 5) = NomeAluno
Cells(linha, 6) = Matricula
Cells(linha, 7) = Solicitacao
Cells(linha, 8) = resposta
Cells(linha, 9) = Dias <---------- seria gravado nessa variável e posteriormente na planilha
Unload Me
Form_SEEDUC.Show
End Sub
obrigado
O objetivo mesmo é desconsiderar final de semana e feriados, seria possível adaptar para essa rotina ?
Private Sub btn_Cadastrar_Click()
If txt_NomeAluno = "" Or txt_DataCadastro = "" Then
Me.txt_Protocolo.BorderColor = &HFF&
Me.txt_DataCadastro.BorderColor = &HFF&
Me.txt_NomeAluno.BorderColor = &HFF&
Me.txt_Matricula.BorderColor = &HFF&
MsgBox "Campos em DESTAQUE são obrigatórios", vbCritical, Soft
Unload Me
Form_SEEDUC.Show
End If
'Exit Sub
Dim ID As Long
Dim NomeAluno As String
Dim Matricula As String
Dim Protocolo As String
Dim Dias As String
Dim Solicitacao As String
Dim resposta As String
Dim status As String
Dim xATV As String
Plan11.Activate
Range("A1048576").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
Dim Data As String
Dim linha As Long
ID = txt_id
Me.Chk_Pendente = 0
Matricula = txt_Matricula
NomeAluno = txt_NomeAluno
Data = txt_DataCadastro
Protocolo = txt_Protocolo
Solicitacao = Txt_Solicitacao
resposta = Txt_Resposta
linha = Range("A" & Rows.Count).End(xlUp).Row + 1
xATV = "N": If Me.Chk_Pendente = 0 Then xATV = "S"
Cells(linha, 1) = ID
Cells(linha, 2) = xATV
Cells(linha, 3) = Protocolo
Cells(linha, 4) = Data
Cells(linha, 5) = NomeAluno
Cells(linha, 6) = Matricula
Cells(linha, 7) = Solicitacao
Cells(linha, 8) = resposta
Cells(linha, 9) = Dias <---------- seria gravado nessa variável e posteriormente na planilha
Unload Me
Form_SEEDUC.Show
End Sub
obrigado
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Dias Uteis entre duas Datas
Não entendi Marcus?
A variavel Dias é "carregada" de uma celula de uma planilha (Cells(linha,9)), então já foi calculada?
A variavel Dias é "carregada" de uma celula de uma planilha (Cells(linha,9)), então já foi calculada?
- Marcus Bull
- Colaborador
- Mensagens: 40
- Registrado em: Qua Mai 09, 2012 8:31 am
Re: Dias Uteis entre duas Datas
oa tarde Rmarco,
Na verdade não me expressei direito.
Na planilha eu uso essa formula, =SE(D14=0;"";DIATRABALHOTOTAL(D14;HOJE())), só que a cada registro q eu gravo eu tenho que copiar para linha abaixo, se não copiar aparece em branco na ListView, por isso que eu mandei a rotina para ver se tinha como implementar o que vc me passou. Seria um Luxo se fizesse o calculo e na hora de gravar já gravaria os dias úteis.
Um abraço
Na verdade não me expressei direito.
Na planilha eu uso essa formula, =SE(D14=0;"";DIATRABALHOTOTAL(D14;HOJE())), só que a cada registro q eu gravo eu tenho que copiar para linha abaixo, se não copiar aparece em branco na ListView, por isso que eu mandei a rotina para ver se tinha como implementar o que vc me passou. Seria um Luxo se fizesse o calculo e na hora de gravar já gravaria os dias úteis.
Um abraço
- Marcus Bull
- Colaborador
- Mensagens: 40
- Registrado em: Qua Mai 09, 2012 8:31 am
Re: Dias Uteis entre duas Datas
Boa tarde Rmarco,
Na verdade não me expressei direito.
Na planilha eu uso essa formula, =SE(D14=0;"";DIATRABALHOTOTAL(D14;HOJE())), só que a cada registro q eu gravo eu tenho que copiar para linha abaixo, se não copiar aparece em branco na ListView, por isso que eu mandei a rotina para ver se tinha como implementar o que vc me passou. Seria um Luxo se fizesse o calculo e na hora de gravar já gravaria os dias úteis.
Um abraço
Na verdade não me expressei direito.
Na planilha eu uso essa formula, =SE(D14=0;"";DIATRABALHOTOTAL(D14;HOJE())), só que a cada registro q eu gravo eu tenho que copiar para linha abaixo, se não copiar aparece em branco na ListView, por isso que eu mandei a rotina para ver se tinha como implementar o que vc me passou. Seria um Luxo se fizesse o calculo e na hora de gravar já gravaria os dias úteis.
Um abraço
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Dias Uteis entre duas Datas
Talvez assim:
Código: Selecionar todos
Private Sub btn_Cadastrar_Click()
'Declaração das Variaveis
Dim ID As Long, Linha As Long
Dim NomeAluno As String, Matricula As String, Protocolo As String
Dim Solicitacao As String, Resposta As String, Status As String
Dim xATV As String, Dias As String, Data As String
If txt_NomeAluno = "" Or txt_DataCadastro = "" Then
Me.txt_Protocolo.BorderColor = &HFF&
Me.txt_DataCadastro.BorderColor = &HFF&
Me.txt_NomeAluno.BorderColor = &HFF&
Me.txt_Matricula.BorderColor = &HFF&
MsgBox "Campos em DESTAQUE são obrigatórios", vbCritical, Soft
Unload Me
Form_SEEDUC.Show
End If
'Exit Sub
Plan11.Activate
Range("A1048576").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ID = txt_id
Me.Chk_Pendente = 0
Matricula = txt_Matricula
NomeAluno = txt_NomeAluno
Data = txt_DataCadastro
Protocolo = txt_Protocolo
Solicitacao = Txt_Solicitacao
Resposta = Txt_Resposta
Linha = Range("A" & Rows.Count).End(xlUp).Row + 1
xATV = "N": If Me.Chk_Pendente = 0 Then xATV = "S"
Cells(Linha, 1) = ID
Cells(Linha, 2) = xATV
Cells(Linha, 3) = Protocolo
Cells(Linha, 4) = Data
Cells(Linha, 5) = NomeAluno
Cells(Linha, 6) = Matricula
Cells(Linha, 7) = Solicitacao
Cells(Linha, 8) = Resposta
Cells(Linha, 9).FormulaLocal = "=DIATRABALHOTOTAL(data.valor(""" & Data & """);Hoje();o1:o12)"
'Dias '<---------- seria gravado nessa variável e posteriormente na planilha
Unload Me
Form_SEEDUC.Show
End Sub
- Marcus Bull
- Colaborador
- Mensagens: 40
- Registrado em: Qua Mai 09, 2012 8:31 am
Re: Dias Uteis entre duas Datas
Bom dia Rmarco,
Ficou perfeito,funcionou certinho.
muito obrigado
obs.: estou clicando na mãozinha mas aparece agradecimento invalido !!
Ficou perfeito,funcionou certinho.
muito obrigado
obs.: estou clicando na mãozinha mas aparece agradecimento invalido !!