Bloccare cella tramite macro.

Anonimo
2020-01-08T19:47:23+00:00

Ciao,

ho notato che l'argomento in oggetto è stato già trattato diverse volte, però non sono riuscito a trovare una soluzione.

Quello che mi serve è una semplice cosa e cioè:

se la cella H3 è vuota si può inserire un valore, altrimenti no.

Ho provato in questo modo:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("H3") <> "" Then

    Range("H3").Locked = True

Else

    Range("H3").Locked = False

End If

End Sub

ma mi esce il seguente errore:

Vladimiro

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
2020-01-10T13:16:59+00:00

Ciao Vladimiro,

il link è sempre lo stesso, solo che la demo l'ho modificata inserendo i tuoi suggerimenti.

Allora il problema è il seguente:

se inserisco manualmente un valore nella cella H3 e successivamente provo a modificarlo, non me lo fa fare e dunque funziona bene.

Se invece comincio ad inserire i valori tramite i pulsanti VINTA o PERSA e provo a modificarli manualmente, me lo fa fare e questo non va bene.

Riassumendo:

vorrei bloccare la cella H3 al secondo inserimento a prescindere se il primo inserimento è avvenuto manualmente o tramite i suddetti pulsanti.

Vladimiro

Nelle tue procedure Rettangolo1A_Click e Rettangolo3A_Click, sostituisci:

   End Sub

con:

    ActiveSheet.Range(miaCella).MergeArea.Locked = True

End Sub

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2020-01-09T10:59:57+00:00

Ciao Vladimiro,

esce ugualmente lo stesso errore.

Al seguente link ho messo una demo; basta inserire un valore nella cella H3 per visualizzare l'errore.

Qui si vede il grande vantaggio di un file di esempio :-)

Il tuo problema è dovuto a due fattori:

  • non è possibile bloccare una cella su un foglio protetto
  • non è possibile bloccare una singola cella che fa parte di un'area di cella unita

Quindi prova:

'=========>>

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)    

    Const miaCella As String = "H3"                                   '<<=== Modifica

    Const sPassword As String = "MiaPassword"                '<<=== Modifica

    With Me

        If Not Intersect(.Range(miaCella), Target) Is Nothing Then

          If Not .Range(miaCella).Value = vbNullString Then

            .Unprotect Password:=sPassword

            .Range(miaCella).MergeArea.Locked = True

            .Protect Password:=sPassword

            End If

        End If

    End With

End Sub

'<<=========

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

19 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2020-01-10T10:00:48+00:00

    Ciao Vladimiro,

    Ciao Norman,

    nel ringraziarti e dirti che il suggerimento funziona alla grande, volevo farti notare che probabilmente nel post precedente ti è sfuggita quest'ulteriore richiesta, tra l'altro molto importante per me:

    C'è ancora un problema però.

    Mi sono accorto che la modifica nella cella H3 è bloccata solo se il primo inserimento avviene manualmente, cioè direttamente nella cella, mentre se l'inserimento iniziale avviene tramite i due pulsanti VINTA o PERSA il valore al suo interno si può modificare e questo non va bene.

    Ti chiederei gentilmente di caricare un esempio del file con il codice dei pulsanti VINTA e PERSA

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-01-10T09:49:09+00:00

    Ciao Norman,

    nel ringraziarti e dirti che il suggerimento funziona alla grande, volevo farti notare che probabilmente nel post precedente ti è sfuggita quest'ulteriore richiesta, tra l'altro molto importante per me:

    C'è ancora un problema però.

    Mi sono accorto che la modifica nella cella H3 è bloccata solo se il primo inserimento avviene manualmente, cioè direttamente nella cella, mentre se l'inserimento iniziale avviene tramite i due pulsanti VINTA o PERSA il valore al suo interno si può modificare e questo non va bene.

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-01-10T09:28:10+00:00

    Ciao Vladimiro,

    C'è un modo per rendere le formule all'interno delle celle invisibili?

    Nel modulo ThisWorkbook (Questa_cartella_di_Lavoro), incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub Workbook_Activate()

     Application.DisplayFormulaBar = False

        Application.EditDirectlyInCell = False

    End Sub

    '--------->>

    Private Sub Workbook_Deactivate()

     Application.DisplayFormulaBar = True

        Application.EditDirectlyInCell = True

    End Sub

    '<<=========

    Salva il file, chiudilo e riaprilo.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento