Ir ao conteúdo

Excel VBA - MsgBox Condicional


DJRolly

Posts recomendados

Postado

Olá galera,

 

Preciso de ajuda referente a uma planilha que estou desenvolvendo, é um mapa de pagamento para a rede de educação onde trabalho, porém necessito limitar a quantidade de aulas que os Diretores irão digitar para pagamento.

 

Os campos Jorn.Mensal + Carga Sup. + Sub.Ev. + Rep.Rec - Somados não podem ultrapassar 240, gostaria de implementar o controle se o valor da soma for maior que 240 emita uma mensagem na Tela impedindo o usuário de colocar esses dados.

 

sou usuario básico em VBA, penei muito pra fazer essa planilha, ma ja consegui muita coisa que queria, se puderem me ajudar.

 

segue o link da planilha ou anexo, reparem que as celulas de controle são as que estão em amarelo, essas ficarão ocultas.

 

 

http://www.4shared.com/office/SzwUrV0Vce/Mapa_de_Pagamento_-_Excel_97-2.html?

 

 

grato pela atenção

 

Allan Vitor

Mapa_de_Pagamento_-_Excel_97-2003_-_Duvida_Msg_Box_Condicional.xls

Postado

eu retirei as senhas....

 

aqui ao apertar Alt.+F11, não está pedindo senha

 

senha para Projeto VBA = "allan2010"

 

senha de proteção de celulas = "123456"

 

Valeu.

Postado

Oi DJRolly

 

Considerando que haverá uma célula que fará tal soma, tente algo como: 

 

Private Sub Worksheet_Calculate()
If Sheets("Teste4").Range("H3").Value >= 240 Then
MsgBox "O valor é maior que 240"
Else
Exit Sub
End If
End Sub
 
Beijos,
 
Carol.
Postado

@DJRolly

Além da excelente sugestão da Carol, se quiser experimentar utilizando a Validação de Dados:

1.selecione o intervalo H9:K9 e estenda a seleção até a linha que desejar
2.no menu clique em Validação de Dados > Pesonalizado > no campo Fórmula coloque a fórmula abaixo > OK
 

=SOMA($H9:$K9)<=240
Postado

Muito obrigado gente, mas ainda não deu certo.

 

A dica do osvaldomp não dá para utilizar pois o layout da planilha é utilizado para funcionários também, onde os campos mudam (H9:K9), em Professores e especialistas K9 é um tipo de dado, já para funcionários ele refere-se a Horas Extras onde não há limites.

 

A dica da carol deu certo, porém ;

 

01 - dá certo apenas quando abro a planilha e se já estiver em Professor I ou II, se eu utilizar o botão "atualizar" ou seja se mudar para outro tipo de cargo ou apenas atualizar, daí a sub não funciona mais.

 

02 - outra coisa é que aparece a mensagem informando que excedeu o limite, porém não impede que os dados digitados não fiquem ali, assim como na validação de dados (dica do osvaldomp), se você digitar ele aparece a mensagem e a celula onde foi digitado o valor fica em evidencia não permitindo você prosseguir.

 

03 - para validação na dica da carol, como eu faço para o Range pegar ser de S9 até S111, tente colocar ("S9:S111"), mas dá erro no código.

 

tentei assim

 

Private Sub Worksheet_Calculate()
    If Sheets("Mapa - 2014").Range("S9").Value > 240 And Sheets("Mapa - 2014").Range("O6").Value = "Professor I" Then
                     MsgBox "O valor é maior que 240"
    Else
        If Sheets("Mapa - 2014").Range("S9").Value > 240 And Sheets("Mapa - 2014").Range("O6").Value = "Professor II" Then
                     MsgBox "O valor é maior que 240"
        Else
             Exit Sub
        End If
    End If
End Sub
 
Obrigado.
Postado

Olá Galera

 

Consegui resolver a questão

 

coloquei o seguinte código na planilha do mapa

 

'Método executado automaticamente quando o usuário mudar a seleção da célula atual:
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim last_row As String 'Recebe o número da última linha preenchida
    Dim soma As Double 'Recebe a soma do intervalo de horas
    
    last_row = Me.Cells(Cells.Rows.Count, 2).End(xlUp).Row 'Pega a última linha preenchida na coluna B do Mapa
 
    For Each cell In Range("B8:B" & last_row) 'Para cada célula em B8:B&última linha preenchida
      soma = WorksheetFunction.Sum(Range("H" & cell.Row & ":K" & cell.Row).Value) 'Função que Soma os valores em um determinado intervalo
        If Plan2.Range("O6") <> "Funcionários" Then
                If soma > 240 Then 'Se o valor de soma for maior que 240
                    MsgBox "A soma das horas na matrícula '" & Range("B" & cell.Row) & _
                           "' é maior que 240" 'Mensagem ao usuário
                    Range("H" & cell.Row & ":K" & cell.Row).Value = "-" 'Limpa o valor do intervalo de hora
                    Exit Sub 'Sai da macro (para não continuar o Loop For/Next
                End If 'Fim do bloco condicional
        End If
    Next cell 'Fim do bloco For/Next
End Sub
 
Valeu!!

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!