Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Dúvidas sobre cálculos, funções simples e aninhadas, fórmulas matriciais, etc.
  • Avatar do usuário
Por Leonardo1234
Posts
#59248
Olá Pessoal,

Minha duvida é a seguinte: eu tenho uma validação de dados na qual o valor 1 sempre deve ser maior que o valor 2 e a regra que eu inseri funciona perfeitamente. Porém, quando eu dou delete na célula do valor 1, ela fica igual a zero, ficando menor que o valor 2, o que não poderia acontecer. Tem alguma forma da validação funcionar nesse caso também? Obrigado.
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#59314
Me parece que só é possível via macro.
Por Leonardo1234
Posts
#59315
Olá Pessoal,

Eu imaginei mesmo que teria que ser via macro, eu teria que abrir um novo topico na parte de macros ou vcs podem responder por aqui mesmo? Enfim, agradeço se tiverem uma solução. Estevaoaba, não está dando certo via formula, como eu disse o valor 1 sempre deve ser maior que o valor 2, porém quando o valor 2 é maior que zero, e eu dou um comando de delete no valor 1, o valor 1 fica igual a zero e menor do que o valor 2, o que não poderia acontecer. A macro portanto deveria permitir um comando de delete sobre o valor 1 apenas se o valor 2 for também igual a zero, pois dessa forma a condição valor1>valor2 se mantém. Agradeço se tiverem uma solução.
Por Leonardo1234
Posts
#59317
Correção, a condição valor1>valor2 não se mantém com ambos valores iguais a zero, pois o valor1 fica igual ao valor 2 e não maior como pede a condição. Portanto, além da macro permitir o delete no valor 1 apenas quando o valor 2 for igual a zero, deveria ser aberta uma nova regra de valor 1=valor2 ser permitido quando ambos são iguais a zero.
Por osvaldomp
#59318
Experimente:
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address <> "$A$2" Then Exit Sub
 If Target.Value = 0 And [B2] <> 0 Then
  Application.Undo
  MsgBox "NÃO PERMITIDO"
 End If
End Sub
obs. mantenha a regra de Validação
Por Leonardo1234
Posts
#59335
Grande mestre, funcionou perfeitamente. Deixa só eu pedir um favor, eu converti aquele intervalo em uma tabela e arrastei a validação também. Tem como ajustar a macro para que ela funcione não só na linha 2, mas também nas linhas restantes que preenchem a tabela? Muito obrigado. Segue o anexo.
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#59349
Olá, Eduardo.
Instale uma cópia do código abaixo no lugar do anterior.
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(ActiveCell, [Tabela1].Columns(1)) Is Nothing Then Exit Sub
 If Target.Value = 0 And Target.Offset(, 1).Value <> 0 Then
  Application.Undo
  MsgBox "NÃO PERMITIDO"
 End If
End Sub
obs. o código irá atuar somente na primeira coluna da Tabela1, mesmo que a quantidade de linhas com dados seja aumentada no futuro e não atuará no cabeçalho.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord