Far funzionare macro in un foglio protetto

Anonimo
2021-06-28T15:11:09+00:00

Ciao a  tutti !!!

Ho delle macro perfettamente funzionanti che però non riesco a farle funzionare in un foglio excel che intendo proteggere bloccando determinate celle ma lasciando le macro funzionanti.

Se qualcuno gentilmente può modificarmi il testo VBA affinchè le macro possano funzionare anche con foglio bloccato.

Segue testo in VBA:

Sub ResetSpreadsheet()

Range("B4", "B300").ClearContents 

Columns("B:B").HorizontalAlignment = xlCenter 

Range("B4", "B512").Font.Bold = True 

Range("DD14").Value = 1# 

Range("DD9").Value = 3 

Range("DD10").Value = 0.5 

Range("DD11").Value = -50000 

End Sub

Sub macro_a()

Dim uriga As Long

uriga = Range("B" & Rows.Count).End(xlUp).Row + 1

If uriga = 2 Then

Range("B5") = "B"

Range("B5").Select

Else

Range("B" & uriga) = "B"

Range("B" & uriga).Select

End If

With Selection.Font

.Color = -16776961

.Name = "Tw Cen MT"

.Size = 16

End With

End Sub

Sub macro_b()

Dim uriga As Long

uriga = Range("B" & Rows.Count).End(xlUp).Row + 1

If uriga = 2 Then

Range("B5") = "P"

Range("B5").Select

Else

Range("B" & uriga) = "P"

Range("B" & uriga).Select

End If

With Selection.Font

.Color = -16776961

.Name = "Tw Cen MT"

.Size = 16

End With

End Sub

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
2021-06-28T21:01:31+00:00

Ciao TORICAL,

Grazie mille per tutto !!!!

Mi fa piacere che tu abbia risolto il problema e ti ringrazio per il cortese riscontro.

Per chiudere questo thread e aiutare gli altri con un problema simile, ti chiedere gentilmente di contrssegnare il mio codice come Risposta.

===

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
    2021-06-28T18:34:23+00:00

    Ciao TORICAL,

    Grazie Norman !!!!

    Funziona perfettamente

    Una ultima richiesta, volevo sapere se fosse possibile la protezione del contenuto del modulo VBA che ho appena compilato in modo tale che nessuno possa avervi accesso

    • Alt+F11 per aprire l'editor di VBA
    • Strumenti
    • Proprietà di VBAProject
    • Seleziona la scheda Protezione
    • Seleziona l'opzione Proteggi progetto dalla visualizzazione

    Immagine

    • Inserisce la tua password
    • Confermi la password
    • OK

    Fai molta attenzione a non perdere la password!!

    ===

    Regards,

    Norman

    ![Immagine](https://learn-attachment.microsoft.com/api/attachments/dad0877b-bf30-446c-8432-cb77f70a6bee?platform=QnA

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2021-06-28T17:34:52+00:00

    Ciao TORICAL,

    Mi sono espresso male.

    Mi riferivo al testo delle Macro VBA che ho copiato e incollato in precedenza.

    Puoi cortesemente inserire quel tuo suggerimento nel testo VBA che ho incollato in modo tale che possa copiarlo e incollarlo direttamente ?

    Prova:

    Option Explicit

    Sub ResetSpreadsheet()

    Const sPassword As String = "Pippo" 
    
    On Error GoTo XIT 
    
    ActiveSheet.Unprotect Password:=sPassword 
    
    Range("B4", "B300").ClearContents 
    
    Columns("B:B").HorizontalAlignment = xlCenter 
    
    Range("B4", "B512").Font.Bold = True 
    
    Range("DD14").Value = 1# 
    
    Range("DD9").Value = 3 
    
    Range("DD10").Value = 0.5 
    
    Range("DD11").Value = -50000 
    

    XIT:

    ActiveSheet.Protect Password:=sPassword 
    

    End Sub

    Sub macro_a()

    Dim uriga As Long 
    
    Const sPassword As String = "Pippo" 
    
    On Error GoTo XIT 
    
    ActiveSheet.Unprotect Password:=sPassword 
    
    uriga = Range("B" & Rows.Count).End(xlUp).Row + 1 
    
    If uriga = 2 Then 
    
        Range("B5") = "B" 
    
        Range("B5").Select 
    
    Else 
    
        Range("B" & uriga) = "B" 
    
        Range("B" & uriga).Select 
    
    End If 
    
    With Selection.Font 
    
        .Color = -16776961 
    
        .Name = "Tw Cen MT" 
    
        .Size = 16 
    
    End With 
    

    XIT:

    ActiveSheet.Protect Password:=sPassword 
    

    End Sub

    Sub macro_b()

    Dim uriga As Long 
    
    Const sPassword As String = "Pippo" 
    
    On Error GoTo XIT 
    
    ActiveSheet.Unprotect Password:=sPassword 
    
    uriga = Range("B" & Rows.Count).End(xlUp).Row + 1 
    
    If uriga = 2 Then 
    
        Range("B5") = "P" 
    
        Range("B5").Select 
    
    Else 
    
        Range("B" & uriga) = "P" 
    
        Range("B" & uriga).Select 
    
    End If 
    
    With Selection.Font 
    
        .Color = -16776961 
    
        .Name = "Tw Cen MT" 
    
        .Size = 16 
    
    End With 
    

    XIT:

    ActiveSheet.Protect Password:=sPassword 
    

    End Sub

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  3. Anonimo
    2021-06-28T15:34:51+00:00

    Ciao TORICAL,

    Ciao a  tutti !!!

    Ho delle macro perfettamente funzionanti che però non riesco a farle funzionare in un foglio excel che intendo proteggere bloccando determinate celle ma lasciando le macro funzionanti.

    Se qualcuno gentilmente può modificarmi il testo VBA affinchè le macro possano funzionare anche con foglio bloccato.

    Segue testo in VBA:

    Sub ResetSpreadsheet()

    Range("B4", "B300").ClearContents

    Columns("B:B").HorizontalAlignment = xlCenter

    Range("B4", "B512").Font.Bold = True

    Range("DD14").Value = 1#

    Range("DD9").Value = 3

    Range("DD10").Value = 0.5

    Range("DD11").Value = -50000

    End Sub

    Sub macro_a()

    Dim uriga As Long

    uriga = Range("B" & Rows.Count).End(xlUp).Row + 1

    If uriga = 2 Then

    Range("B5") = "B"

    Range("B5").Select

    Else

    Range("B" & uriga) = "B"

    Range("B" & uriga).Select

    End If

    With Selection.Font

    .Color = -16776961

    .Name = "Tw Cen MT"

    .Size = 16

    End With

    End Sub

    Sub macro_b()

    Dim uriga As Long

    uriga = Range("B" & Rows.Count).End(xlUp).Row + 1

    If uriga = 2 Then

    Range("B5") = "P"

    Range("B5").Select

    Else

    Range("B" & uriga) = "P"

    Range("B" & uriga).Select

    End If

    With Selection.Font

    .Color = -16776961

    .Name = "Tw Cen MT"

    .Size = 16

    End With

    End Sub

    Prova il seguente approccio:

    '========>>

    Option Explicit

    '-------->>

    Public Sub Tester()

    Const sPassword As String = "Pippo" 
    
    On Error GoTo XIT 
    
    ActiveSheet.Unprotect Password:=sPassword  
    
    **'\\ Tuo codice** 
    
    On Error GoTo 0 
    

    XIT:

    ActiveSheet.Protect Password:=sPassword 
    

    End Sub

    '<<========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  4. Anonimo
    2021-06-28T16:54:05+00:00

    Ciao Norman, dato che non sono un esperto di VBA potresti cortesemente dirmi esattamente dove scrivere tutta quella stringa oppure ancor meglio se mi modifichi il file che ho inviato e me lo incolli in modo tale che io possa copiare e incollare il tutto modificato

    La risposta è stata utile?

    0 commenti Nessun commento