Discussione:
abilitare il grassetto/corsivo in un foglio protetto
(troppo vecchio per rispondere)
igormax62
2011-11-16 21:30:24 UTC
Permalink
Ciao a tutti,
ho la necessità che sia abilita una parte della barra degli strumenti
cioè il grassetto - corsivo
ed il colore in un foglio protetto, all'avvio del file.
Uso come macro abbinate ad un pulsante queste:

Sub grassetto()
ActiveSheet.Unprotect "123456"
Selection.Font.Bold = True 'grassetto
ActiveSheet.Protect "123456"
End Sub

Sub corsivo()
ActiveSheet.Unprotect "123456"
Selection.Font.Bold = False 'corsivo
ActiveSheet.Protect "123456"
End Sub

se possibile chiedo che dovrebbero funzionare all'avvio del file.
Ho excel 2000.
Ciao e anticipatamente ringrazio.
igor
r
2011-11-16 22:07:45 UTC
Permalink
Post by igormax62
Ciao a tutti,
ho la necessità che sia abilita una parte della barra degli strumenti
cioè il grassetto - corsivo
ed il colore in un foglio protetto, all'avvio del file.
Sub grassetto()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = True 'grassetto
    ActiveSheet.Protect "123456"
End Sub
Sub corsivo()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = False 'corsivo
     ActiveSheet.Protect "123456"
End Sub
se possibile chiedo che dovrebbero funzionare all'avvio del file.
Ho excel 2000.
Ciao e anticipatamente ringrazio.
igor
quel selection mi fa una paura ....

per la domanda puoi usare l'evento open di thisworkbook ... oppure una
routine dal nome auto_open ... però non ho capito cosa dovrebbe far
partire
saluti
r
eliano
2011-11-16 23:18:24 UTC
Permalink
Post by igormax62
Ciao a tutti,
ho la necessità che sia abilita una parte della barra degli strumenti
cioè il grassetto - corsivo
ed il colore in un foglio protetto, all'avvio del file.
Sub grassetto()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = True 'grassetto
    ActiveSheet.Protect "123456"
End Sub
Sub corsivo()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = False 'corsivo
     ActiveSheet.Protect "123456"
End Sub
se possibile chiedo che dovrebbero funzionare all'avvio del file.
Ho excel 2000.
Ciao e anticipatamente ringrazio.
igor
Ciao Igor.
Cosa vuoi fare esattamente ? Vuoi scegliere all'inizio le
caratteristiche del carattere per quel foglio ?

A parte il fatto che parli anche del colore, ma se vuoi che la macro
si scateni all'apertrura del file (??) che c'entra il Selection che
ha tanto "spaventato" Roby ?

Coraggio Roby, rinfrancati; presumibilmente Igor scherzava. :-))

Saluti
Eliano
elby
2011-11-17 09:59:17 UTC
Permalink
Se ho ben capito, Igor avrebbe questa esigenza:
In Excel 2000 vuole che un file xls con un foglio protetto vuole che
l'utente abbia la possibilità di variare il formato grassetto del
carattere nonostante il foglio sia bloccato.
Purtroppo Excel 2000 diversamente dalla successive versioni non
permette la configurazione della tipologia dei blocchi sui fogli
protetti. In Excel 2003 è possibile lasciare all'utente la possibilità
di variare per esempio la larghezza di colonne. La configurazione
in Excel 2003 è possibile sia all'interfaccia utente che via VBA
( argomenti del metodo Protect dell'oggetto Worksheet ). In Excel 2000
è necessario creare Routine che modificano il formato racchiudendole
tra istruzioni che prima sbloccano e poi ribloccano il foglio. In
alternativa si può impostare la protezione con l'argomento del metodo
Protect UserInterfaceOnly = TRUE all'apertura del foglio di lavoro in
modo da lasciare solo il codice di formattazione. Quindi invece di
Sub grassetto()
ActiveSheet.Unprotect "123456"
Selection.Font.Bold = True 'grassetto
ActiveSheet.Protect "123456"
End Sub

Si può lasciare
Nel Modulo ThisWorkbook:
Private Sub Workbook_Open()
Worksheets("Foglio1").Protect Password:="123456"; UserInterfaceOnly:=
TRUE
End Sub
Nel Modulo del foglio di lavoro:
Sub grassetto()
Selection.Font.Bold = True 'grassetto
End Sub
Quest'ultimo metodo però non sempre funziona e io preferisco il primo.
Non mi risulta sia possibile fare altro in Excel 2000

Faccio notare che Selection.Font.Bold = TRUE non è molto robusto,
perchè se l'utente seleziona un oggetto tipo un grafico o una forma
verrà sollevato errore a Runtime
L'istruzione dovrebbe essere preceduta da un test della tipologia di
selezione
Elio
Post by eliano
Post by igormax62
Ciao a tutti,
ho la necessità che sia abilita una parte della barra degli strumenti
cioè il grassetto - corsivo
ed il colore in un foglio protetto, all'avvio del file.
Sub grassetto()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = True 'grassetto
    ActiveSheet.Protect "123456"
End Sub
Sub corsivo()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = False 'corsivo
     ActiveSheet.Protect "123456"
End Sub
se possibile chiedo che dovrebbero funzionare all'avvio del file.
Ho excel 2000.
Ciao e anticipatamente ringrazio.
igor
Ciao Igor.
Cosa vuoi fare esattamente ? Vuoi scegliere all'inizio le
caratteristiche del carattere per quel foglio ?
A parte il fatto che parli anche del colore, ma se vuoi che la macro
si scateni all'apertrura del file (??)  che c'entra il Selection che
ha tanto "spaventato" Roby ?
Coraggio Roby, rinfrancati; presumibilmente Igor scherzava. :-))
Saluti
Eliano- Nascondi testo citato
- Mostra testo citato -
elby
2011-11-17 10:12:09 UTC
Permalink
Rettifico.
L'errore di Runtime viene sollevato solo se si tipizza Selection a
Range, ma in realtà viene selezionata una forma o un grafico:
Sub grassetto()
Dim rng As Range
Set rng = Selection
Selection.Font.Bold = True 'grassetto
End Sub
Elio
Post by elby
In Excel 2000 vuole che un file xls con un foglio protetto vuole che
l'utente abbia la possibilità di variare il formato grassetto del
carattere nonostante il foglio sia bloccato.
Purtroppo Excel 2000 diversamente dalla successive versioni non
permette la configurazione della tipologia dei blocchi sui fogli
protetti. In Excel 2003 è possibile lasciare all'utente la possibilità
di  variare per esempio  la larghezza di colonne. La configurazione
in Excel 2003 è possibile sia all'interfaccia utente che via VBA
( argomenti del metodo Protect dell'oggetto Worksheet ). In Excel 2000
è necessario creare Routine che modificano  il formato racchiudendole
tra istruzioni che prima sbloccano e poi ribloccano il foglio. In
alternativa si può impostare la protezione con l'argomento del metodo
Protect UserInterfaceOnly = TRUE all'apertura del foglio di lavoro in
modo da lasciare solo il codice di formattazione. Quindi invece di
Sub grassetto()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = True 'grassetto
    ActiveSheet.Protect "123456"
End Sub
Si può lasciare
Private Sub Workbook_Open()
Worksheets("Foglio1").Protect Password:="123456"; UserInterfaceOnly:=
TRUE
End Sub
Sub grassetto()
    Selection.Font.Bold = True 'grassetto
End Sub
Quest'ultimo metodo però non sempre funziona e io preferisco il primo.
Non mi risulta sia possibile fare altro in Excel 2000
Faccio notare che Selection.Font.Bold = TRUE non è molto robusto,
perchè se l'utente seleziona un oggetto tipo un grafico o una forma
verrà sollevato errore a Runtime
L'istruzione dovrebbe essere preceduta da un test della tipologia di
selezione
Elio
Post by eliano
Post by igormax62
Ciao a tutti,
ho la necessità che sia abilita una parte della barra degli strumenti
cioè il grassetto - corsivo
ed il colore in un foglio protetto, all'avvio del file.
Sub grassetto()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = True 'grassetto
    ActiveSheet.Protect "123456"
End Sub
Sub corsivo()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = False 'corsivo
     ActiveSheet.Protect "123456"
End Sub
se possibile chiedo che dovrebbero funzionare all'avvio del file.
Ho excel 2000.
Ciao e anticipatamente ringrazio.
igor
Ciao Igor.
Cosa vuoi fare esattamente ? Vuoi scegliere all'inizio le
caratteristiche del carattere per quel foglio ?
A parte il fatto che parli anche del colore, ma se vuoi che la macro
si scateni all'apertrura del file (??)  che c'entra il Selection che
ha tanto "spaventato" Roby ?
Coraggio Roby, rinfrancati; presumibilmente Igor scherzava. :-))
Saluti
Eliano- Nascondi testo citato
- Mostra testo citato -- Nascondi testo citato
- Mostra testo citato -
r
2011-11-17 10:33:15 UTC
Permalink
Post by elby
Rettifico.
 L'errore di Runtime viene sollevato solo se si tipizza Selection a
Sub grassetto()
Dim rng As Range
Set rng = Selection
    Selection.Font.Bold = True 'grassetto
End Sub
Elio
sicuro?
ciao
r
elby
2011-11-17 10:31:33 UTC
Permalink
Il codice potrebbe essere così strutturato:

Sub grassetto()
Dim rng As Range
MsgBox "L'oggetto selezionato è di tipo " & TypeName(Selection)
If TypeName(Selection) = "Range" Then
Set rng = Selection
rng.Font.Bold = True 'grassetto
End If
End Sub

Se si vuole lasciare all'utente la possibilità di trasformare in
grassetto solo la prima cella di un range selezionato
si può aggiungere dopo Set rng = Selection
Set rng = rng.Range("A1")

Elio
Post by elby
Rettifico.
 L'errore di Runtime viene sollevato solo se si tipizza Selection a
Sub grassetto()
Dim rng As Range
Set rng = Selection
    Selection.Font.Bold = True 'grassetto
End Sub
Elio
Post by elby
In Excel 2000 vuole che un file xls con un foglio protetto vuole che
l'utente abbia la possibilità di variare il formato grassetto del
carattere nonostante il foglio sia bloccato.
Purtroppo Excel 2000 diversamente dalla successive versioni non
permette la configurazione della tipologia dei blocchi sui fogli
protetti. In Excel 2003 è possibile lasciare all'utente la possibilità
di  variare per esempio  la larghezza di colonne. La configurazione
in Excel 2003 è possibile sia all'interfaccia utente che via VBA
( argomenti del metodo Protect dell'oggetto Worksheet ). In Excel 2000
è necessario creare Routine che modificano  il formato racchiudendole
tra istruzioni che prima sbloccano e poi ribloccano il foglio. In
alternativa si può impostare la protezione con l'argomento del metodo
Protect UserInterfaceOnly = TRUE all'apertura del foglio di lavoro in
modo da lasciare solo il codice di formattazione. Quindi invece di
Sub grassetto()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = True 'grassetto
    ActiveSheet.Protect "123456"
End Sub
Si può lasciare
Private Sub Workbook_Open()
Worksheets("Foglio1").Protect Password:="123456"; UserInterfaceOnly:=
TRUE
End Sub
Sub grassetto()
    Selection.Font.Bold = True 'grassetto
End Sub
Quest'ultimo metodo però non sempre funziona e io preferisco il primo.
Non mi risulta sia possibile fare altro in Excel 2000
Faccio notare che Selection.Font.Bold = TRUE non è molto robusto,
perchè se l'utente seleziona un oggetto tipo un grafico o una forma
verrà sollevato errore a Runtime
L'istruzione dovrebbe essere preceduta da un test della tipologia di
selezione
Elio
Post by eliano
Post by igormax62
Ciao a tutti,
ho la necessità che sia abilita una parte della barra degli strumenti
cioè il grassetto - corsivo
ed il colore in un foglio protetto, all'avvio del file.
Sub grassetto()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = True 'grassetto
    ActiveSheet.Protect "123456"
End Sub
Sub corsivo()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = False 'corsivo
     ActiveSheet.Protect "123456"
End Sub
se possibile chiedo che dovrebbero funzionare all'avvio del file.
Ho excel 2000.
Ciao e anticipatamente ringrazio.
igor
Ciao Igor.
Cosa vuoi fare esattamente ? Vuoi scegliere all'inizio le
caratteristiche del carattere per quel foglio ?
A parte il fatto che parli anche del colore, ma se vuoi che la macro
si scateni all'apertrura del file (??)  che c'entra il Selection che
ha tanto "spaventato" Roby ?
Coraggio Roby, rinfrancati; presumibilmente Igor scherzava. :-))
Saluti
Eliano- Nascondi testo citato
- Mostra testo citato -- Nascondi testo citato
- Mostra testo citato -- Nascondi testo citato
- Mostra testo citato -
r
2011-11-17 10:45:29 UTC
Permalink
Post by igormax62
Sub grassetto()
Dim rng As Range
MsgBox "L'oggetto selezionato è di tipo " & TypeName(Selection)
If TypeName(Selection) = "Range" Then
    Set rng = Selection
    rng.Font.Bold = True 'grassetto
End If
End Sub
una alternativa:
Sub grassetto(Optional b As Boolean = True)
If TypeOf Selection Is Range Then
Selection.Font.Bold = b
End If
End Sub

saluti
r
igormax62
2011-11-17 18:03:06 UTC
Permalink
Post by r
Post by igormax62
Sub grassetto()
Dim rng As Range
MsgBox "L'oggetto selezionato è di tipo " & TypeName(Selection)
If TypeName(Selection) = "Range" Then
Set rng = Selection
rng.Font.Bold = True 'grassetto
End If
End Sub
Sub grassetto(Optional b As Boolean = True)
If TypeOf Selection Is Range Then
Selection.Font.Bold = b
End If
End Sub
saluti
r
Sarà come dite, ma non ho capito cosa devo fare :( :( :(
Cosa deve mettere in thisworkbook e nel modulo1?
igor
eliano
2011-11-17 20:50:24 UTC
Permalink
Post by igormax62
Post by r
Post by igormax62
Sub grassetto()
Dim rng As Range
MsgBox "L'oggetto selezionato è di tipo " & TypeName(Selection)
If TypeName(Selection) = "Range" Then
    Set rng = Selection
    rng.Font.Bold = True 'grassetto
End If
End Sub
Sub grassetto(Optional b As Boolean = True)
If TypeOf Selection Is Range Then
    Selection.Font.Bold = b
End If
End Sub
saluti
r
Sarà come dite, ma non ho capito cosa devo fare :( :( :(
Cosa deve mettere  in thisworkbook e nel modulo1?
igor- Nascondi testo citato
- Mostra testo citato -
Non saprei, io sono rimasto alla domanda posta stamani alle 00.18
rimasta senza risposta. :-))
Ciao
Eliano
igormax62
2011-11-17 21:10:00 UTC
Permalink
Post by eliano
Post by igormax62
Post by r
Post by igormax62
Sub grassetto()
Dim rng As Range
MsgBox "L'oggetto selezionato è di tipo " & TypeName(Selection)
If TypeName(Selection) = "Range" Then
Set rng = Selection
rng.Font.Bold = True 'grassetto
End If
End Sub
Sub grassetto(Optional b As Boolean = True)
If TypeOf Selection Is Range Then
Selection.Font.Bold = b
End If
End Sub
saluti
r
Sarà come dite, ma non ho capito cosa devo fare :( :( :(
Cosa deve mettere in thisworkbook e nel modulo1?
igor- Nascondi testo citato
- Mostra testo citato -
Non saprei, io sono rimasto alla domanda posta stamani alle 00.18
rimasta senza risposta. :-))
Ciao
Eliano
Ciao eliano non sono esperto di Vba.
Il colore non serve, basta il grassetto/corsivo
Le due macro le ho create con il registratore e sono collegate ad un
pulsante.
Funzionano senza problemi.
Il foglio è protetto e il range di celle non bloccate è questo A1:F16.
Chiedo se possibile che all'avvio del foglio il pulsante G (grassetto)
sia attivo
senza usare il pulsante della macro che ho creato, sempre sia
possibile.
Ho excel 2000.
Ciao,
igor
eliano
2011-11-17 22:34:00 UTC
Permalink
Post by igormax62
Post by eliano
Post by igormax62
Post by r
Post by igormax62
Sub grassetto()
Dim rng As Range
MsgBox "L'oggetto selezionato è di tipo " & TypeName(Selection)
If TypeName(Selection) = "Range" Then
    Set rng = Selection
    rng.Font.Bold = True 'grassetto
End If
End Sub
Sub grassetto(Optional b As Boolean = True)
If TypeOf Selection Is Range Then
    Selection.Font.Bold = b
End If
End Sub
saluti
r
Sarà come dite, ma non ho capito cosa devo fare :( :( :(
Cosa deve mettere  in thisworkbook e nel modulo1?
igor- Nascondi testo citato
- Mostra testo citato -
Non saprei, io sono rimasto alla domanda posta stamani alle 00.18
rimasta senza risposta. :-))
Ciao
Eliano
Ciao eliano non sono esperto di Vba.
Il colore non serve, basta il grassetto/corsivo
Le due macro le ho create con il registratore e sono collegate ad un
pulsante.
Funzionano senza problemi.
Il foglio è protetto e il range di celle non bloccate è questo A1:F16.
Chiedo se possibile che all'avvio del foglio il pulsante G (grassetto)
sia attivo
senza usare il pulsante della macro che ho creato, sempre sia
possibile.
Ho excel 2000.
Ciao,
igor- Nascondi testo citato
- Mostra testo citato -
Scusa Igor ma non avevo capito la domanda; inoltre non uso XL2000 da
10 anni.
Con il mio attuale XL2003 userei questa macro di evento in
ThisWorkbook senza nessuna macro "accessoria":

Private Sub Workbook_Open()
Worksheets("Foglio1").Protect Password:="123456",
DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Per la/le macro necessarie in XL2000 vediamo cosa dicono Elio e Roby.
Ciao
Eliano .
igormax62
2011-11-17 22:41:19 UTC
Permalink
Post by eliano
Post by igormax62
Post by eliano
Post by igormax62
Post by r
Post by igormax62
Sub grassetto()
Dim rng As Range
MsgBox "L'oggetto selezionato è di tipo " & TypeName(Selection)
If TypeName(Selection) = "Range" Then
Set rng = Selection
rng.Font.Bold = True 'grassetto
End If
End Sub
Sub grassetto(Optional b As Boolean = True)
If TypeOf Selection Is Range Then
Selection.Font.Bold = b
End If
End Sub
saluti
r
Sarà come dite, ma non ho capito cosa devo fare :( :( :(
Cosa deve mettere in thisworkbook e nel modulo1?
igor- Nascondi testo citato
- Mostra testo citato -
Non saprei, io sono rimasto alla domanda posta stamani alle 00.18
rimasta senza risposta. :-))
Ciao
Eliano
Ciao eliano non sono esperto di Vba.
Il colore non serve, basta il grassetto/corsivo
Le due macro le ho create con il registratore e sono collegate ad un
pulsante.
Funzionano senza problemi.
Il foglio è protetto e il range di celle non bloccate è questo A1:F16.
Chiedo se possibile che all'avvio del foglio il pulsante G (grassetto)
sia attivo
senza usare il pulsante della macro che ho creato, sempre sia
possibile.
Ho excel 2000.
Ciao,
igor- Nascondi testo citato
- Mostra testo citato -
Scusa Igor ma non avevo capito la domanda; inoltre non uso XL2000 da
10 anni.
Con il mio attuale XL2003 userei questa macro di evento in
Private Sub Workbook_Open()
Worksheets("Foglio1").Protect Password:="123456",
DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Per la/le macro necessarie in XL2000 vediamo cosa dicono Elio e Roby.
Ciao
Eliano .
Ciao ho provato questa tua ultima macro, non si blocca, non dà errore
ma non funziona.
Il pulsante G (grassetto) non si attiva.
Ciao,
igor
eliano
2011-11-17 23:12:41 UTC
Permalink
Post by igormax62
Post by eliano
Post by igormax62
Post by eliano
Post by igormax62
Post by r
Post by igormax62
Sub grassetto()
Dim rng As Range
MsgBox "L'oggetto selezionato è di tipo " & TypeName(Selection)
If TypeName(Selection) = "Range" Then
    Set rng = Selection
    rng.Font.Bold = True 'grassetto
End If
End Sub
Sub grassetto(Optional b As Boolean = True)
If TypeOf Selection Is Range Then
    Selection.Font.Bold = b
End If
End Sub
saluti
r
Sarà come dite, ma non ho capito cosa devo fare :( :( :(
Cosa deve mettere  in thisworkbook e nel modulo1?
igor- Nascondi testo citato
- Mostra testo citato -
Non saprei, io sono rimasto alla domanda posta stamani alle 00.18
rimasta senza risposta. :-))
Ciao
Eliano
Ciao eliano non sono esperto di Vba.
Il colore non serve, basta il grassetto/corsivo
Le due macro le ho create con il registratore e sono collegate ad un
pulsante.
Funzionano senza problemi.
Il foglio è protetto e il range di celle non bloccate è questo A1:F16.
Chiedo se possibile che all'avvio del foglio il pulsante G (grassetto)
sia attivo
senza usare il pulsante della macro che ho creato, sempre sia
possibile.
Ho excel 2000.
Ciao,
igor- Nascondi testo citato
- Mostra testo citato -
Scusa Igor ma non avevo capito la domanda; inoltre non uso XL2000 da
10 anni.
Con il mio attuale XL2003 userei questa macro di evento in
Private Sub Workbook_Open()
Worksheets("Foglio1").Protect Password:="123456",
DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Per la/le macro necessarie in XL2000 vediamo cosa dicono Elio e Roby.
Ciao
Eliano .
Ciao ho provato questa tua ultima macro, non si blocca, non dà errore
ma non funziona.
Il pulsante G (grassetto) non si attiva.
Ciao,
igor- Nascondi testo citato
- Mostra testo citato -
Come si prevedeva.:-((
Post by igormax62
Private Sub Workbook_Open()
Worksheets("Foglio1").Protect Password:="123456"; UserInterfaceOnly:=
TRUE
End Sub
Sub grassetto()
Selection.Font.Bold = True 'grassetto
End Sub
Non ho la possibilità di provarle, ma provale con il tuo XL2000 e
vediamo cosa succede.
Saluti
Eliano
P.S.
Ovviamente cancella il ">".:-))
elby
2011-11-18 01:08:49 UTC
Permalink
Anche se attivi via macro il grassetto all'attivazione del foglio di
lavoro, come ti sposti in'altra cella, anche del range non protetto,
perdi l'attivazione del pulsante. Pertanto il programma deve
ripristinare il grassetto ogni volta che ti muovi nell'area A1:F16.
Prova con questo codice inserito nel modulo del foglio in oggetto.
Equivale alla combinazione di tasti CTRL + G ( in Excel 2010 attiva/
disattiva il grassetto ). Mi sembra una via veloce rispetto
all'alternativa di manipolare la CommandBar con i suoi CommandButton,
ogni volta che cambia la selezione. In alternativa a
Application.SendKeys "^g" puoi provare Selection.Font.Bold = TRUE

Nel modulo del foglio:
Private Sub Worksheet_Activate()
Range("A1").Select
If Selection.Font.Bold = False Then
Me.Unprotect "123456"
Application.SendKeys "^g"
Me.Protect "123456"
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("A1:F16"), Target) Is Nothing Then
Me.Unprotect "123456"
If Selection.Font.Bold = False Then
Application.SendKeys "^g"
End If
Else
Me.Protect "123456"
End If
End Sub

Ciao Elio
Post by igormax62
Chiedo se possibile che all'avvio del foglio il pulsante G (grassetto)
sia attivo
senza usare il pulsante della macro che ho creato, sempre sia
possibile.
igormax62
2011-11-18 18:02:06 UTC
Permalink
Post by elby
Anche se attivi via macro il grassetto all'attivazione del foglio di
lavoro, come ti sposti in'altra cella, anche del range non protetto,
perdi l'attivazione del pulsante. Pertanto il programma deve
ripristinare il grassetto ogni volta che ti muovi nell'area A1:F16.
Prova con questo codice inserito nel modulo del foglio in oggetto.
Equivale alla combinazione di tasti CTRL + G ( in Excel 2010 attiva/
disattiva il grassetto ). Mi sembra una via veloce rispetto
all'alternativa di manipolare la CommandBar con i suoi CommandButton,
ogni volta che cambia la selezione. In alternativa a
Application.SendKeys "^g" puoi provare Selection.Font.Bold = TRUE
Private Sub Worksheet_Activate()
Range("A1").Select
If Selection.Font.Bold = False Then
Me.Unprotect "123456"
Application.SendKeys "^g"
Me.Protect "123456"
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("A1:F16"), Target) Is Nothing Then
Me.Unprotect "123456"
If Selection.Font.Bold = False Then
Application.SendKeys "^g"
End If
Else
Me.Protect "123456"
End If
End Sub
Ciao Elio
Post by igormax62
Chiedo se possibile che all'avvio del foglio il pulsante G (grassetto)
sia attivo
senza usare il pulsante della macro che ho creato, sempre sia
possibile.
Ciao elio,
ho provato questa tua nuova macro che ho inserito nel modulo del
foglio1:
(ho inserito solo questa, ho fatto bene?)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("A1:F16"), Target) Is Nothing Then
Me.Unprotect "123456"
If Selection.Font.Bold = False Then
Application.SendKeys "^g"
End If
Else
Me.Protect "123456"
End If
End Sub

funziona bene e solo nel range A1:F16.
Una cosa ora se clicco dentro a questo range posso modificare anche
dimensioni
delle righe e delle colonne è possibile che non ci sia questa
modifica?
Ciao e grazie elio ed anche agli altri di questo thread.
Ciao,
igor
elby
2011-11-18 20:37:51 UTC
Permalink
Post by igormax62
(ho inserito solo questa, ho fatto bene?)
Hai provato a chiederti perchè ho messo anche l'altra routine?
Senza la
Private Sub Worksheet_Activate()
Range("A1").Select
If Selection.Font.Bold = False Then
Me.Unprotect "123456"
Application.SendKeys "^g"
Me.Protect "123456"
End If
End Sub
quando attivi il foglio di lavoro ( tu usi l'espressione avviare il
foglio ), nulla ti garantisce che il grasetto sia attivato, che era
poi una tua espressa richiesta. Il foglio è bloccato ma potresti
ancora aver permesso all'utente di selezionare le celle bloccate.
Quando attivi il foglio la cella che era l'ultima selezionata prima
della precedente de-attivazione potrebbe essere una delle celle
bloccate che ha il font non impostato a grassetto. In tal caso quando
attivi il foglio il pulsante del grassetto non appare come attivo. Che
poi per la tua funzionalità questo serva poco o niente, allora devi
essere tu a rimangiarti la richiesta.
Post by igormax62
Una cosa ora se clicco dentro a questo range posso modificare anche
dimensioni
delle righe e delle colonne è possibile che non ci sia questa
modifica?
Senza la punteggiatura ( intendo quella dell'italiano e non del codice
VBA ) è un poco dura interpretare. Ci provo. Vuoi che nonostante il
foglio sia bloccato, modificare le dimensioni di righe e colonne?
Come già detto questo non è direttamente possibile in Excel 2000.
Bisogna creare routine specifiche, che acquisendo la dimensione da una
cella o da una text box di una userform, modifichino la dimensione
della colonna / riga selezionata; l'istruzione come al solito va
racchiusa tra le istruzioni di sblocco password e reimpostazione
password. Sono possibili numerose varianti: per es impostare una
routine che legge la dimesione della colonna e a seconda del valore di
questa attribuirne uno superiore fino ad un massimo oltre il quale la
dimensione torna ad essere quella minima. La routine potrebbere essere
attivata dalla selezione della prima cella della colonna. Ma a questo
punto, tenuto conto delle modifiche possibili ai formati delle celle
in un foglio bloccato, andrebebro aperti thread specifici per ogni
problema / formato.
Ciao Elio
igormax62
2011-11-19 12:16:26 UTC
Permalink
Post by elby
Post by igormax62
(ho inserito solo questa, ho fatto bene?)
Hai provato a chiederti perchè ho messo anche l'altra routine?
Senza la
Private Sub Worksheet_Activate()
Range("A1").Select
If Selection.Font.Bold = False Then
Me.Unprotect "123456"
Application.SendKeys "^g"
Me.Protect "123456"
End If
End Sub
quando attivi il foglio di lavoro ( tu usi l'espressione avviare il
foglio ), nulla ti garantisce che il grasetto sia attivato, che era
poi una tua espressa richiesta. Il foglio è bloccato ma potresti
ancora aver permesso all'utente di selezionare le celle bloccate.
Quando attivi il foglio la cella che era l'ultima selezionata prima
della precedente de-attivazione potrebbe essere una delle celle
bloccate che ha il font non impostato a grassetto. In tal caso quando
attivi il foglio il pulsante del grassetto non appare come attivo. Che
poi per la tua funzionalità questo serva poco o niente, allora devi
essere tu a rimangiarti la richiesta.
Post by igormax62
Una cosa ora se clicco dentro a questo range posso modificare anche
dimensioni
delle righe e delle colonne è possibile che non ci sia questa
modifica?
Senza la punteggiatura ( intendo quella dell'italiano e non del codice
VBA ) è un poco dura interpretare. Ci provo. Vuoi che nonostante il
foglio sia bloccato, modificare le dimensioni di righe e colonne?
Come già detto questo non è direttamente possibile in Excel 2000.
Bisogna creare routine specifiche, che acquisendo la dimensione da una
cella o da una text box di una userform, modifichino la dimensione
della colonna / riga selezionata; l'istruzione come al solito va
racchiusa tra le istruzioni di sblocco password e reimpostazione
password. Sono possibili numerose varianti: per es impostare una
routine che legge la dimesione della colonna e a seconda del valore di
questa attribuirne uno superiore fino ad un massimo oltre il quale la
dimensione torna ad essere quella minima. La routine potrebbere essere
attivata dalla selezione della prima cella della colonna. Ma a questo
punto, tenuto conto delle modifiche possibili ai formati delle celle
in un foglio bloccato, andrebebro aperti thread specifici per ogni
problema / formato.
Ciao Elio
Ciao elio le macro funzionano bene e ora la modifica che chiedo è che
le righe restino come sono sempre in foglio protetto.
Ciao e grazie.
igor
elby
2011-11-19 15:41:52 UTC
Permalink
Ma in Excel 2000 questa è già la condizione di base. L'utente non può
modificare l'altezza delle righe, anche di quelle contenenti celle non
bloccate. Quindi, non c'è niente da modificare.
Ciao Elio
Post by igormax62
Ciao elio le macro funzionano bene e ora la modifica che chiedo è che
le righe restino come sono sempre in foglio protetto.
Ciao e grazie.
igor
igormax62
2011-11-19 18:38:55 UTC
Permalink
Post by elby
Ma in Excel 2000 questa è già la condizione di base. L'utente non può
modificare l'altezza delle righe, anche di quelle contenenti celle non
bloccate. Quindi, non c'è niente da modificare.
Ciao Elio
Post by igormax62
Ciao elio le macro funzionano bene e ora la modifica che chiedo è che
le righe restino come sono sempre in foglio protetto.
Ciao e grazie.
igor
No con queste macro in foglio protetto posso modificare l'altezza
delle righe,
il colore ecc... solo nella parte delle celle non protette.
Praticamente solo nelle celle protette la barra della formattazione
funziona,
nelle altre no.
Per questo chiedo, se possibile, se si possono modificare le macro.
igor
elby
2011-11-20 15:50:51 UTC
Permalink
Ma che cosa intendi con queste macro?
Posta il codice e chiarisce lo scenario di protezione del foglio.
elio
igormax62
2011-11-20 18:25:52 UTC
Permalink
Post by elby
Ma che cosa intendi con queste macro?
Posta il codice e chiarisce lo scenario di protezione del foglio.
elio
Ciao elby spero di spiegarmi.
Ora in foglio1 (vba) ho inserito questo:

Option Explicit

Private Sub Worksheet_Activate()
Range("A1").Select
If Selection.Font.Bold = False Then
Me.Unprotect "123456"
Application.SendKeys "^g"
Me.Protect "123456"
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("A1:F16"), Target) Is Nothing Then
Me.Unprotect "123456"
If Selection.Font.Bold = False Then
Application.SendKeys "^g"
End If
Else
Me.Protect "123456"
End If
End Sub

con queste 2 macro e con foglio protetto posso muovere/modificare la
grandezza/altezza
delle celle/righe restando nel range A1:F1, nel resto del foglio no
perchè è bloccato.
Praticamente le macro sboccano tutta la barra della formattazione solo
ne range A1:F1.
igor
elby
2011-11-21 01:49:50 UTC
Permalink
A me non risulta questo sia possibile. MA allora, a maggior ragione
cosa non ti torna?
Elio
Post by igormax62
Post by elby
Ma che cosa intendi con queste macro?
Posta il codice e chiarisce lo scenario di protezione del foglio.
elio
Ciao elby spero di spiegarmi.
Option Explicit
Private Sub Worksheet_Activate()
Range("A1").Select
If Selection.Font.Bold = False Then
Me.Unprotect "123456"
Application.SendKeys "^g"
Me.Protect "123456"
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("A1:F16"), Target) Is Nothing Then
Me.Unprotect "123456"
If Selection.Font.Bold = False Then
    Application.SendKeys "^g"
End If
Else
Me.Protect "123456"
End If
End Sub
con queste 2 macro e con foglio protetto posso muovere/modificare la
grandezza/altezza
delle celle/righe restando nel range A1:F1, nel resto del foglio no
perchè è bloccato.
Praticamente le macro sboccano tutta la barra della formattazione solo
ne range A1:F1.
igor
eliano
2011-11-17 10:12:30 UTC
Permalink
Post by elby
In Excel 2000 vuole che un file xls con un foglio protetto vuole che
l'utente abbia la possibilità di variare il formato grassetto del
carattere nonostante il foglio sia bloccato.
Purtroppo Excel 2000 diversamente dalla successive versioni non
permette la configurazione della tipologia dei blocchi sui fogli
protetti. In Excel 2003 è possibile lasciare all'utente la possibilità
di  variare per esempio  la larghezza di colonne. La configurazione
in Excel 2003 è possibile sia all'interfaccia utente che via VBA
( argomenti del metodo Protect dell'oggetto Worksheet ). In Excel 2000
è necessario creare Routine che modificano  il formato racchiudendole
tra istruzioni che prima sbloccano e poi ribloccano il foglio. In
alternativa si può impostare la protezione con l'argomento del metodo
Protect UserInterfaceOnly = TRUE all'apertura del foglio di lavoro in
modo da lasciare solo il codice di formattazione. Quindi invece di
Sub grassetto()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = True 'grassetto
    ActiveSheet.Protect "123456"
End Sub
Si può lasciare
Private Sub Workbook_Open()
Worksheets("Foglio1").Protect Password:="123456"; UserInterfaceOnly:=
TRUE
End Sub
Sub grassetto()
    Selection.Font.Bold = True 'grassetto
End Sub
Quest'ultimo metodo però non sempre funziona e io preferisco il primo.
Non mi risulta sia possibile fare altro in Excel 2000
Faccio notare che Selection.Font.Bold = TRUE non è molto robusto,
perchè se l'utente seleziona un oggetto tipo un grafico o una forma
verrà sollevato errore a Runtime
L'istruzione dovrebbe essere preceduta da un test della tipologia di
selezione
Elio
Post by eliano
Post by igormax62
Ciao a tutti,
ho la necessità che sia abilita una parte della barra degli strumenti
cioè il grassetto - corsivo
ed il colore in un foglio protetto, all'avvio del file.
Sub grassetto()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = True 'grassetto
    ActiveSheet.Protect "123456"
End Sub
Sub corsivo()
ActiveSheet.Unprotect "123456"
    Selection.Font.Bold = False 'corsivo
     ActiveSheet.Protect "123456"
End Sub
se possibile chiedo che dovrebbero funzionare all'avvio del file.
Ho excel 2000.
Ciao e anticipatamente ringrazio.
igor
Ciao Igor.
Cosa vuoi fare esattamente ? Vuoi scegliere all'inizio le
caratteristiche del carattere per quel foglio ?
A parte il fatto che parli anche del colore, ma se vuoi che la macro
si scateni all'apertrura del file (??)  che c'entra il Selection che
ha tanto "spaventato" Roby ?
Coraggio Roby, rinfrancati; presumibilmente Igor scherzava. :-))
Saluti
Eliano- Nascondi testo citato
- Mostra testo citato -- Nascondi testo citato
- Mostra testo citato -
Ciao Elio.
Vedo che rispondi a me e spero che legga anche l'OP.:-))
Comunque non posso che ripetere il mio post di ieri con il quale
chiedevo all'OP spiegazioni in particolare su quel "Selection".
Saluti
Eliano
Loading...