Notifications
Clear all

MsgBox quando data inserida está dentro de um período

8 Posts
3 Usuários
0 Reactions
1,176 Visualizações
(@ricgonza)
Posts: 6
Active Member
Topic starter
 

Bom dia, mestres

Gostaria de inserir uma msbox na minha Planilha em anexo que, quando eu insiro uma data em uma célula (células rosas na aba "Escala"), que está dentro de um período de indisponibilidade já preenchido em outra aba da planilha (células rosas na aba "indisponibilidade"), ela apareça me informando a mensagem "FUNCIONÁRIO INDISPONÍVEL".

Acredito que seja bem simples, a planilha em anexo está de fácil entendimento. A planilha se trata de um controle de serviços que devem ser prestados pelos funcionários e as seus períodos de indisponibilidade para tais.

Desde já muito obrigado pela atenção, espero que alguém possa ajudar.

Abraço

 
Postado : 23/03/2015 8:15 am
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Olá ricgonza!
Sua questão pode ser resolvida sem o uso do VBA. Você pode aplicar a validação de dados personalizada para restringir a entrada da data conforme o critério de indisponibilidade. Para fazer isso, você deve selecionar o intervalo que deseja aplicar a validação começando em D2 e ir na guia "DADOS" e na opção "Validação de dados". Na caixa de validação, escolha a opção "Personalizado" e no campo de fórmula deve ser inserida a fórmula:

=E(OU(PROCV($A2;INDISPONIBILIDADE!$A:$K;5;0)="";D2<PROCV($A2;INDISPONIBILIDADE!$A:$K;5;0);D2>PROCV($A2;INDISPONIBILIDADE!$A:$K;7;0));OU(PROCV($A2;INDISPONIBILIDADE!$A:$K;9;0)="";D2<PROCV($A2;INDISPONIBILIDADE!$A:$K;9;0);D2>PROCV($A2;INDISPONIBILIDADE!$A:$K;11;0)))

Eu notei que existe uma limitação do tamanho da fórmula a ser inserida no campo, então talvez você não consiga copiar e colar. Para resolver isso, renomeie a planilha INDISPONIBILIDADE para um nome menor (Ex: INDISP) e aplicaque a fórmula com esta referência, ficando:

=E(OU(PROCV($A2;INDISP!$A:$K;5;0)="";D2<PROCV($A2;INDISP!$A:$K;5;0);D2>PROCV($A2;INDISP!$A:$K;7;0));OU(PROCV($A2;INDISP!$A:$K;9;0)="";D2<PROCV($A2;INDISP!$A:$K;9;0);D2>PROCV($A2;INDISP!$A:$K;11;0)))

Depois disso pode renomear a planilha para o nome maior que a fórmula na validação se ajustará normalmente.

Na mesma caixa de opções de validação, vá na guia "Alerta de Erro" e digite a mensagem de erro desejada.

Como observação, deixo que a fórmula de validação analisa as datas do primeiro lançamento do funcionário. Caso haja a necessidade de um terceiro período de indisponibilidade, se for lançado numa nova linha abaixo de uma linha já existente do funcionário, não será analisado.

Veja o modelo anexo.

Abraços!

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 23/03/2015 11:17 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

ricgonza,

Boa Tarde!

Para testar, basta você digitar uma data que esteja dentro do período indisponível do funcionário. No caso desse exemplo que você enviou, testei com o funcionário João. Veja se é assim.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 23/03/2015 11:32 am
(@ricgonza)
Posts: 6
Active Member
Topic starter
 

Issamu,

Obrigado pelo tempo mas validação de dados não serve no caso, não posso manualmente alterar cada validação de cada célula ao período de indisponibilidade. É muito flexivel

Olá ricgonza!
Sua questão pode ser resolvida sem o uso do VBA. Você pode aplicar a validação de dados personalizada para restringir a entrada da data conforme o critério de indisponibilidade. Para fazer isso, você deve selecionar o intervalo que deseja aplicar a validação começando em D2 e ir na guia "DADOS" e na opção "Validação de dados". Na caixa de validação, escolha a opção "Personalizado" e no campo de fórmula deve ser inserida a fórmula:

=E(OU(PROCV($A2;INDISPONIBILIDADE!$A:$K;5;0)="";D2<PROCV($A2;INDISPONIBILIDADE!$A:$K;5;0);D2>PROCV($A2;INDISPONIBILIDADE!$A:$K;7;0));OU(PROCV($A2;INDISPONIBILIDADE!$A:$K;9;0)="";D2<PROCV($A2;INDISPONIBILIDADE!$A:$K;9;0);D2>PROCV($A2;INDISPONIBILIDADE!$A:$K;11;0)))

Eu notei que existe uma limitação do tamanho da fórmula a ser inserida no campo, então talvez você não consiga copiar e colar. Para resolver isso, renomeie a planilha INDISPONIBILIDADE para um nome menor (Ex: INDISP) e aplicaque a fórmula com esta referência, ficando:

=E(OU(PROCV($A2;INDISP!$A:$K;5;0)="";D2<PROCV($A2;INDISP!$A:$K;5;0);D2>PROCV($A2;INDISP!$A:$K;7;0));OU(PROCV($A2;INDISP!$A:$K;9;0)="";D2<PROCV($A2;INDISP!$A:$K;9;0);D2>PROCV($A2;INDISP!$A:$K;11;0)))

Depois disso pode renomear a planilha para o nome maior que a fórmula na validação se ajustará normalmente.

Na mesma caixa de opções de validação, vá na guia "Alerta de Erro" e digite a mensagem de erro desejada.

Como observação, deixo que a fórmula de validação analisa as datas do primeiro lançamento do funcionário. Caso haja a necessidade de um terceiro período de indisponibilidade, se for lançado numa nova linha abaixo de uma linha já existente do funcionário, não será analisado.

Veja o modelo anexo.

Abraços!

 
Postado : 23/03/2015 12:30 pm
(@ricgonza)
Posts: 6
Active Member
Topic starter
 

Wagner,

Era isso que queria mesmo, porém não identifiquei no código macro, onde poderei alterar a "fonte" para abranger os outros nomes e também a outra coluna de indisponibilidade (repare que há duas indisponibilidade possíveis de serem marcadas, para diferentes períodos)

ricgonza,

Boa Tarde!

Para testar, basta você digitar uma data que esteja dentro do período indisponível do funcionário. No caso desse exemplo que você enviou, testei com o funcionário João. Veja se é assim.

 
Postado : 23/03/2015 12:31 pm
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Issamu,

Obrigado pelo tempo mas validação de dados não serve no caso, não posso manualmente alterar cada validação de cada célula ao período de indisponibilidade. É muito flexivel

Olá ricgonza!
Não entendi exatamente a sua explicação do porquê que a validação não te atende. Não sei se fui claro, mas você não precisa criar uma validação para cada célula, você vai fazer uma só validação para todo o intervalo desejado, utilizando a fórmula passada. A fórmula é aplicada de forma relativa, portanto não há a necessidade de ficar criando uma validação para cada célula.

Você chegou a olhar o arquivo que postei?

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 23/03/2015 12:40 pm
(@ricgonza)
Posts: 6
Active Member
Topic starter
 

Obrigado mais uma vez, Issamu!

Desculpe mas acabei pulando uma parte do texto da resposta.

A questão é que a validação de dados não vai permitir a inserção de dados difentes de datas (às vezes são inseridos textos livres) e também quero que permita a inserção da data mesmo que indisponível. O que eu precisava era apenas um alerta mesmo.

Issamu,

Obrigado pelo tempo mas validação de dados não serve no caso, não posso manualmente alterar cada validação de cada célula ao período de indisponibilidade. É muito flexivel

Olá ricgonza!
Não entendi exatamente a sua explicação do porquê que a validação não te atende. Não sei se fui claro, mas você não precisa criar uma validação para cada célula, você vai fazer uma só validação para todo o intervalo desejado, utilizando a fórmula passada. A fórmula é aplicada de forma relativa, portanto não há a necessidade de ficar criando uma validação para cada célula.

Você chegou a olhar o arquivo que postei?

 
Postado : 24/03/2015 7:46 am
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Compreendi, Ricgonza!
Porém, talvez não seja do seu conhecimento, mas pela validação de dados há opção para fazer exatamente o que você quer. Na tela onde é definida a mensagem de alerta de erro, é possível definir o estilo da mensagem que tem como opções "Parar", "Aviso" e "Informações", sendo que se você selecionar "Aviso" faz exatamente o que você descreveu, é data a mensagem de aviso de indisponibilidade, mas é dada a opção de entrar com o valor digitado na célula.

Veja o arquivo modificado.

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 24/03/2015 7:55 am