Notifications
Clear all

Função "Dim" com os dias da semana

5 Posts
4 Usuários
0 Reactions
835 Visualizações
(@juauvitor)
Posts: 0
New Member
Topic starter
 

Bom pessoal,
na minha planilha, tenho o seguinte código:

Dim dHora As Integer
dHora = Hour(Now)
Select Case dHora
Case Is >= 18
sSaudacao = "Boa Noite"
Case Is < 9
sSaudacao = "Boa Dia mestre, uma boa hora para um café..."
Case Is < 10
sSaudacao = "Boa Dia mestre, que tal um chá uma hora destas?."
Case Is < 11
sSaudacao = "nada, só pra testar mesmo"
Case Is <= 12
sSaudacao = "Boa Dia mestre, quase hora do almoço :)"
Case Is < 14
sSaudacao = "Bah, Recém chegou do almoço e já tá aqui?"
Case Is < 15
sSaudacao = "Bah fei, ta com sono né? pega um café lá"
Case Is < 16
sSaudacao = "iiiih, vai arriscar um chá? devem ter feito daqueles sonolentos lá."
Case Is < 18
sSaudacao = "eae parça, só pelas 18:00, que tal um cafézinho? Quer saber o fluxo de hoje?"
Case Is >= 0
sSaudacao = "Bom Dia mestre divíno :)"
End Select

dHora = MsgBox(sSaudacao, vbYesNo + vbQuestion, "S.E.I.A.- Sitema Excel de Inteligência Artificical")

If dHora = vbYes Then
  fluxo = MsgBox(Saudacao, vbOKOnly, "S.E.I.A.- Sitema Excel de Inteligência Artificical")
Else
  'do nothing
End If

Basicamente a planilha manda uma msgbox cada vez que a planilha é aberta, nos meus testes, coloquei na "Case Is < 18" a Mensagem "Quer saber o seu fluxo de hoje?".
Enfim, o fluxo do meu trabalho e dos demais colega varia com os dias da semana, de segunda á sexta. e caso a pessoa selecionasse "sim" na Msgbox, ele fosse demostrar o fluxo daquele dia da semana. Fiz naquela "If" um teste com a "Dim Fluxo As Intereger". O seguinte:

Dim fluxo As Integer
 fluxo = Day(Today)
 Select Case fluxo
 Case Is = Monday
 Saudacao = "Ter-F2, Ter-F3, Ter- F4"
 Case Is = Tuesday
 Saudacao = "Seg-F2, Sab-F3, Seg-F4"
 Case Is = Wednesday
 sSaudacao = "Seg-F2, Sab-F3, Seg-F4"
 Case Is = Thursday
 Saudacao = "qua-F1, qua-F2, qua-F3"
 Case Is = Friday
 Saudacao = "Seg-F2, Sab-F3, Seg-F4"
 End Select

Ok, Só acho que devo ter errado no inicio desta última fórmula, onde coloco "fluxo = Day(Today)", pode ser fácil de resolver, ou não, contando que aprendi VBA Auto de data, se puderem me explicar como proceder.
Muito grato desde já, apesar de muitas informações, espero que entendam. :mrgreen:

 
Postado : 23/06/2016 2:31 pm
(@mprudencio)
Posts: 0
New Member
 

Disponibilize o arquivo que fica mais facil

 
Postado : 23/06/2016 2:37 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Experimente

fluxo = Day(Date)
 
Postado : 23/06/2016 3:26 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Sua rotina Fluxo.
Today não é uma função/nome reconhecido pelo VBA, provavelmente deva utilizar Date conforme sugerido pelo colega Osvaldo.
A Função Day irá retornar um numero que identifica o dia do mês (1 a 31), assim pela sequencia de sua rotina suponho que o esperado seja o dia da semana; para isso deve utilizar WeekDay -->Fluxo=WeekDay(Date) ; que irá retornar um numero (1 a 7) que identifica o dia da semana.
Para obter a descrição do nome do dia, deve alterar sua declaração da variavel Fluxo para string --> Dim Fluxo As String, e utilizar WeekDayName em conjunto com o weekday -->Fluxo = WeekdayName(Weekday(Date)); contudo recomendo utilizar o numero do dia da semana

Sub tt()
Dim Fluxo As Integer
Fluxo = Weekday(Date)
Select Case Fluxo
    Case 2 'Segunda
        Saudacao = "Ter-F2, Ter-F3, Ter- F4"
    Case 3  'Terça
        Saudacao = "Seg-F2, Sab-F3, Seg-F4"
    Case 4  'Quarta
        Saudacao = "Seg-F2, Sab-F3, Seg-F4"
    Case 5  'Quinta
        Saudacao = "qua-F1, qua-F2, qua-F3"
    Case 6  'Sexta
        Saudacao = "Seg-F2, Sab-F3, Seg-F4"
End Select
MsgBox Saudacao
End Sub
 
Postado : 23/06/2016 5:28 pm
(@juauvitor)
Posts: 0
New Member
Topic starter
 

Reinaldo, perfeito, deu super certo, a única coisa que eu troquei e funcionou foi tirar o "MsgBox Saudacao" ali do final, pois com ele a mensagem se abria, depois abria a pergunta, e se responder sim, novamente esta mensagem se abria. Deixei assim daí, na WorkBook Open ():

Dim Fluxo As Integer
Fluxo = Weekday(Date)
Select Case Fluxo
Case 2 'Segunda
Saudacao = "Ter-F2, Ter-F3, Ter- F4"
Case 3 'Terça
Saudacao = "Seg-F2, Sab-F3, Seg-F4"
Case 4 'Quarta
Saudacao = "Seg-F2, Sab-F3, Seg-F4"
Case 5 'Quinta
Saudacao = "qua-F1, qua-F2, qua-F3"
Case 6 'Sexta
Saudacao = "Seg-F2, Sab-F3, Seg-F4"
End Select

E deu super certo, Obrigado pela força, como eu disse, aprendo VBA auto de data, e nunca tenho certeza absoluta dos procedimentos á seguir ksksks. :mrgreen:

 
Postado : 24/06/2016 5:50 am