come attivare/disattivare una cella in base al contenuto della cella precedente? microsoft excel

Anonimo
2023-09-10T11:10:49+00:00

come attivare/disattivare una cella in base al contenuto della cella precedente?

vorrei che le celle BI5,BJ5,BK5 si attivassero solo in caso il contenuto (valore) della cella BH5 sii inferiore al 6,00.

esempio di quando la cella si deve attivare: 2,3,4,5.

ad esempio se il contenuto di BH5 è 4.00, le celle BI5,BJ5,BK5 devono essere modificabili.

se invece, il contenuto di BH5 è 6 o 7 o 8 o 9 o 10 (PARI O SUPERIORE AL 6.00), le celle BI5,BJ5,BK5 NON devono essere modificabili.

allego foto.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2023-09-11T23:33:59+00:00

Ciao Gianfranco,

Durante l'adattamento del codice mi è sfuggito che non è necessario ed è ridondante disabilitare e riabilitare gli eventi perché 5la cancellazione o l'inserimento della validazione dei dati non attiva l'evento Worksheet_Change.

Quindi la versione che ho postato può essere semplificata così:

'========>>

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rng As Range, rCell As Range 

Set Rng = Intersect(Target, Range("BH5:BH1000")) 

If Not Rng Is Nothing Then 

    With Rng 

        .Offset(, 1).Resize(, 3).Validation.Delete 

        For Each rCell In Rng.Cells 

            With rCell 

                If .Value < 6 Then 

                    .Offset(0, 1).Resize(, 3).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= \_ 

                        xlBetween, Formula1:="1,2,3,4,5,6,7,8,9,10" 

                End If 

            End With 

        Next rCell 

    End With 

End If 

End Sub

'<<========

===

Regards,

Norman

Immagine

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

8 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2023-09-11T14:55:23+00:00

    Ciao Gianfranco,

    Come sai, per ragioni di efficienza, normalmente preferisco non selezionare gli oggetti, quindi, forse, considera di sostituire::

      Target.Offset(0, 1).Resize(1, 3).Select 
    
    
    
        With Selection.Validation 
    
    
    
            .Delete 
    
    
    
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    
    
    
            xlBetween, Formula1:="1,2,3,4,5,6,7,8,9,10" 
    
    
    
      End With
    

    con:

             With Target.Offset(0, 1).Resize(1, 3).Validation 
    
                    .Delete 
    
                    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    
                        xlBetween, Formula1:="1,2,3,4,5,6,7,8,9,10" 
    
             End With 
    

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Gianfranco55 25,190 Punti di reputazione Moderatore volontario
    2023-09-11T14:24:30+00:00

    ciao

    elimina le convalide che hai

    metti questa nel foglio interessato

    Private Sub Worksheet_Change(ByVal Target As Range) 
    
    If Not Intersect(Target, Range("BH5:BH1000")) Is Nothing Then 
    
    Application.EnableEvents = False 
    
      Target.Offset(0, 1).Resize(1, 3).Select 
    
        With Selection.Validation 
    
            .Delete 
    
         End With 
    
    If Target < 6 Then 
    
      Target.Offset(0, 1).Resize(1, 3).Select 
    
        With Selection.Validation 
    
            .Delete 
    
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    
            xlBetween, Formula1:="1,2,3,4,5,6,7,8,9,10" 
    
      End With 
    
         End If 
    
         End If 
    
         Application.EnableEvents = True 
    
    End Sub 
    

    poi scrivi un numero in BH5 ..funziona fino a BH1000

    vediamo se ho capito

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-09-11T13:33:15+00:00

    io non utilizzo nessuna formula per quelle celle. utilizzo solo una convalida dati ad elenco. l'elenco è composto da numeri da 0 a 10. spero abbia capito

    ciao

    con formule la vedo dura visto che parliamo di convalide

    con il vba si può fare

    ci dici che dati usi in convalida e da dove li prelevi

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Gianfranco55 25,190 Punti di reputazione Moderatore volontario
    2023-09-10T11:38:55+00:00

    ciao

    con formule la vedo dura visto che parliamo di convalide

    con il vba si può fare

    ci dici che dati usi in convalida e da dove li prelevi

    La risposta è stata utile?

    0 commenti Nessun commento