Usuário com melhor resposta
Bloquear Celular Excel via VBA

Pergunta
-
Boa Noite !!!
Help !!!
Criei uma planilha de calculo no Excel e estou com dificuldade em bloquear uma determinada celula em 100%. E colocar uma mensagem caso esta celula seja superior a 100% apareça uma mensagem de alerta informando que este valor não podera ser superior a 100%.
No aguardo
Mrpresenty
Respostas
-
Use o Worksheet_Change, como fez da primeira vez.
Code SnippetPrivate Sub Worksheet_Change(ByVal Target As Range)
Dim rng As RangeSet rng = Range("I28")
If Not Intersect(Target, rng) Is Nothing Then
If IsNumeric(rng.Value) = False Then
MsgBox "Prenchimento inválido.", vbCritical
rng.Value = Empty
Else
If Abs(rng.Value) > 1 Then
MsgBox "Percentual maximo - 100%", 0 + 4096, "Atenção !!!"
rng.Value = Empty
End If
End If
End If
End Sub- Sugerido como Resposta Hezequias VasconcelosModerator sexta-feira, 19 de outubro de 2012 14:05
- Marcado como Resposta Hezequias VasconcelosModerator segunda-feira, 22 de outubro de 2012 17:22
Todas as Respostas
-
-
Luiz Cláudio, boa noite !!!
Muito obrigado pela atenção !!!
Eu sabia que da dava para fazer pela Validação do excel, porem não estava muito seguro e fui mais a fundo em relação a pesquisar uma alternativa para criar a macro via VBA.
Segue abaixo a macro que precisava.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim var As Single
var = Range("I28")
If var > 1 Then
MsgBox "Percentual maximo - 100%", 5, "Atenção !!!"
End If
End Sub
abraço,
Leonardo
-
Se o objetivo é impedir a entrada inválida do valor, o recurso de validação de dados é mais seguro e eficaz que a macro.
Da forma que está, ela apenas avisará, mas permitirá que insira o valor.
É bom também informar o Target como sendo a célula I28, para evitar que a alteração de outras células chame a mesma validação.
-
Luiz,
Segue abaixo novo.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim var As Single
var = Range("I28")
If var > 1 Then
MsgBox "Percentual maximo - 100%", 0 + 4096, "Atenção !!!"
Cells(28, 9) = ""
Else
End IfEnd Sub
Abraço,
Leo
-
Use o Worksheet_Change, como fez da primeira vez.
Code SnippetPrivate Sub Worksheet_Change(ByVal Target As Range)
Dim rng As RangeSet rng = Range("I28")
If Not Intersect(Target, rng) Is Nothing Then
If IsNumeric(rng.Value) = False Then
MsgBox "Prenchimento inválido.", vbCritical
rng.Value = Empty
Else
If Abs(rng.Value) > 1 Then
MsgBox "Percentual maximo - 100%", 0 + 4096, "Atenção !!!"
rng.Value = Empty
End If
End If
End If
End Sub- Sugerido como Resposta Hezequias VasconcelosModerator sexta-feira, 19 de outubro de 2012 14:05
- Marcado como Resposta Hezequias VasconcelosModerator segunda-feira, 22 de outubro de 2012 17:22
-
Senhores boa tarde.
Sei que o tópico é antigo, mas preciso de um auxilio muito parecido com o do colega.
Tenho um documento utilizado na empresa onde caso a condição seja "Não" (célula H7) então a célula H8 deve ser bloqueada, porém, caso a célula H7 for igual a "Sim", permitir então o preenchimento da célula H8.
Tentei alterar o código exibido aqui, porém me falta o tal do conhecimento profundo.
Obrigado e aguardo ajuda.
-
Boa tarde!
Pode me ajudar com a formula abaixo!!
Preciso incluir mais coluna e outras celulas aleatoria ou na sequencia
Private
Sub
Worksheet_SelectionChange(
ByVal
Target
As
Range)
If
Target.Column = 1
Then
If
Target.Row = 3
Or
Target.Row = 5
Then
Beep
Cells(Target.Row, Target.Column).Offset(0, 1).
Select
End
If
End
If
End
Sub