Notifications
Clear all

bloquear célula de acordo com critério

5 Posts
2 Usuários
0 Reactions
1,141 Visualizações
(@brunsftw)
Posts: 93
Estimable Member
Topic starter
 

Bom diaa!
Tô precisando de uma ajudinha de vocês aqui de novo.
Eu tenho uma planilha com uma validação de dados do tipo lista na minha coluna "E". Nessa lista contém os valores numéricos (15, 18, 21, 27 e 41).
O que eu precisava é que quando selecionassem o valor 41 na coluna "E", a range de S à BC ficasse bloqueada pra digitação, mas isso individualmente por linha.
É possível fazer isso?

 
Postado : 30/11/2015 5:16 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ficou bem generica a solicitação, faltou um pouco mais de detalhes, então vai umas instruções básicas, lembrando que para o Bloqueio surta efeito a aba tem de estar protegida.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim stgValor

    stgValor = Target.Value 'Valor da Celula Ativa
    
    If Target.Column = 5 Then 'Se Coluna "E"
        
        ActiveSheet.Unprotect 'Desprotege
        
        'Adicione os Case(s) para as outras opções
        Select Case stgValor
        
            Case 41 'Se 41
                Range("S:BC").Locked = True 'Bloqueia o Range
           
           
         End Select
         
    End If
    
    'Protege a aba, se não proteger o Bloqueio não servira de nada
    ActiveSheet.Protect
    
End Sub

[]s

 
Postado : 30/11/2015 5:53 am
(@brunsftw)
Posts: 93
Estimable Member
Topic starter
 

Oi, Mauro!
Valeu pelo retorno, já me ajudou bastante.
É quase isso que eu preciso, talvez eu não tenha explicado direito ali em cima. Foi mal.
Eu fiz o teste aqui e quando eu seleciono o valor 41 na minha celula o intervalo fica bloqueado, mas quando eu seleciono outro valor na minha lista na coluna "E", as celulas continuam bloqueadas quando na verdade só deveriam bloquear para o valor 41 e não para os demais.
Outro ponto é que eu fiz esse teste na linha 1 e a minha validação de dados está na minha coluna "E" inteira. Então, se eu for fazer o mesmo processo na linha 2, 3, 4 e sucessivamente, as range de S à BC vao continuar bloqueadas.

Por exemplo:
Se eu selecionar o valor 41 na minha célula E1, minhas células de S1 à BC1 devem ficar bloqueadas. Caso eu altere para outro valor, elas desbloqueiem.

Se eu selecionar o valor 41 na minha célula E2, minhas células de S2 à BC2 devem ficar bloqueadas. Caso eu altere para outro valor, elas desbloqueiem.

Se eu selecionar qualquer outro valor exceto o 41 na minha célula E3, minhas células de S3 à BC3 não ficam bloqueadas, mas caso futuramente eu altere para 41, elas devem ficar bloqueadas.

E assim sucessivamente.
Espero ter explicado melhor dessa vez haha

 
Postado : 30/11/2015 6:54 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Por isso que comentei que faltaram detalhes, poderiamos escrever de outra forma, mas aproveitando o que passei, ficaria assim :

Private Sub Worksheet_Change(ByVal Target As Range)
        Dim stgValor
        Dim stgRow
        
        stgValor = Target.Value 'Valor da Celula Ativa
        stgRow = Target.Row 'Numero da linha ativa
        
        If Target.Column = 5 Then 'Se Coluna "E"
           
            ActiveSheet.Unprotect 'Desprotege
           
            'Adicione os Case(s) para as outras opções
            Select Case stgValor
                Case 41 'Se 41
                    Range("S" & stgRow & ":BC" & stgRow).Locked = True  'Bloqueia o Range
                Case Else
                    Range("S" & stgRow & ":BC" & stgRow).Locked = False 'Desbloqueia o Range
               
             End Select
             
        End If
       
        'Protege a aba, se não proteger o Bloqueio não servira de nada
        ActiveSheet.Protect
       
    End Sub

Lembre-se que por padrão todas as celulas estão com a opção de Bloqueada, então na coluna "E" que terá a validação tem de desbloquear, se não apos proteger não conseguira alterar-la.

[]s

 
Postado : 30/11/2015 8:18 am
(@brunsftw)
Posts: 93
Estimable Member
Topic starter
 

Valeu, Mauro!
Ficou certinho!

 
Postado : 30/11/2015 11:30 am