Discussione:
Barrare intervallo di celle
(troppo vecchio per rispondere)
Melba
2006-09-19 19:06:54 UTC
Permalink
Salve a tutti, altre cose le ho trovate nell'utilissimo archivio post,
ma questo problema non l'ho visto.

Ho una modulo piuttosto intricato costruito con excel dove avrei
necessita di barrare, con una linea diagonale per esempio, alcune
sezioni che contengono formule e dati. E' una linea che mi serve solo a
livello grafico, non deve invalidare niente di quello che c'è sotto e
deve interessare un gruppo di celle.
La formattazione condizionale non è così flessibile, che altro modo ci
può essere oltre a quello manuale con biro dopo che ho stampato il foglio?


Barbara
eSQueL
2006-09-20 08:53:59 UTC
Permalink
Salve a tutti, altre cose le ho trovate nell'utilissimo archivio post, ma
questo problema non l'ho visto.
Ho una modulo piuttosto intricato costruito con excel dove avrei necessita
di barrare, con una linea diagonale per esempio, alcune sezioni che
contengono formule e dati. E' una linea che mi serve solo a livello
grafico, non deve invalidare niente di quello che c'è sotto e deve
interessare un gruppo di celle.
La formattazione condizionale non è così flessibile, che altro modo ci può
essere oltre a quello manuale con biro dopo che ho stampato il foglio?
Barbara
Sub BarraCelle()
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
With Selection.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End Sub

Aggiungi un pulsante personalizzato (menù personalizza) e gli assegni la
Sub. Quindi selezioni le celle che vuoi formattare e clicchi sul tuo
pulsante.

Ciao
Melba
2006-09-20 11:31:40 UTC
Permalink
Post by eSQueL
Sub BarraCelle()
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
With Selection.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End Sub
Aggiungi un pulsante personalizzato (menù personalizza) e gli assegni la
Sub. Quindi selezioni le celle che vuoi formattare e clicchi sul tuo
pulsante.
grazie mille più tardi provo. Ma se uno volesse assegnare la sub ad una
cella con vero o falso la quale a sua volta è assegnata ad un check box?
in modo che quando la check è spuntata una serie di caselle che ho già
determinato viene sbarrata.
Mauro Gamberini
2006-09-20 13:50:02 UTC
Permalink
Ho una modulo piuttosto intricato costruito con excel dove avrei necessita
di barrare, con una linea diagonale per esempio, alcune sezioni che
contengono formule e dati. E' una linea che mi serve solo a livello
grafico, non deve invalidare niente di quello che c'è sotto e deve
interessare un gruppo di celle.
La formattazione condizionale non è così flessibile, che altro modo ci può
essere oltre a quello manuale con biro dopo che ho stampato il foglio?
Senza ricorrere al vba:

Visualizza-->Barre degli strumenti
Linguetta: Comandi
Nella finestra di sx(Categorie) seleziona: Formato
Cerca nella finestra di dx(Comandi) il pulsante
di tuo gradimento e trascinalo su una delle
barre.
Poi lo utilizzi selezionado la/le cella/e e premendo il pulsante.

Con il vba:

Public Sub BarraCelle()

With Selection.Borders(xlDiagonalDown)
.LineStyle = xlNone
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

End Sub

Oppure, se vuoi invertire la diagonale:

Public Sub BarraCelle()

With Selection.Borders(xlDiagonalUp)
.LineStyle = xlNone
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

End Sub
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
eSQueL
2006-09-20 14:20:18 UTC
Permalink
Salve a tutti, altre cose le ho trovate nell'utilissimo archivio post, ma
questo problema non l'ho visto.
Ho una modulo piuttosto intricato costruito con excel dove avrei necessita
di barrare, con una linea diagonale per esempio, alcune sezioni che
contengono formule e dati. E' una linea che mi serve solo a livello
grafico, non deve invalidare niente di quello che c'è sotto e deve
interessare un gruppo di celle.
La formattazione condizionale non è così flessibile, che altro modo ci può
essere oltre a quello manuale con biro dopo che ho stampato il foglio?
Barbara
Mi pare contorto.

Meglio così:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim CellaModif As String
CellaModif = Target.Address
Range(CellaModif).Select
If MsgBox("", vbQuestion + vbYesNo) = vbYes Then
Range(CellaModif).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
With Selection.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
End Sub

La sub va inserita in ogni Foglio per il quale vuoi questo tipo di
risultato.

Ciao :)

eSQueL
eSQueL
2006-09-20 14:27:36 UTC
Permalink
Nella fretta ...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim CellaModif As String
CellaModif = Target.Address
If MsgBox("Barrare?", vbQuestion + vbYesNo) = vbYes Then
Range(CellaModif).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
With Selection.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
End Sub


Ciao

eSQueL
Mauro Gamberini
2006-09-20 14:53:15 UTC
Permalink
Post by eSQueL
Mi pare contorto.
Anche a me.
C'è un apposito pulsante.....
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
eSQueL
2006-09-20 15:21:10 UTC
Permalink
Post by Mauro Gamberini
Post by eSQueL
Mi pare contorto.
Anche a me.
C'è un apposito pulsante.....
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
Eh, non so. In fondo, evitare il mouse è comodo e, anche se è vero che dopo
ogni inserimento l'evento si scatena,
se, ad esempio, la necessità è quella di monitorare celle contenenti formule

If Target.HasFormula = False Then Exit Sub

potrebbe bastare a rendere non invasiva la soluzione.

No mouse, no stress :)

Ciao

eSQueL
Melba
2006-09-20 17:40:23 UTC
Permalink
Post by Mauro Gamberini
Post by eSQueL
Mi pare contorto.
Anche a me.
C'è un apposito pulsante.....
Scusate forse dovevo spiegare meglio il problema.
Si tratta di una scheda analisi su un foglio excel bloccato di sola lettura.
Un operatore immette dei dati e spunta delle caselle in un altro foglio
excel utilizzato come form. I dati inseriti verranno calcolati e
andranno a riempire questa scheda analisi che viene poi stampata e firmata.
La scheda analisi contiene molti campi e solo alcuni vanno compilati a
seconda del tipo di analisi appunto, gli altri vanno barrati.
Mi servirebbe che quando vengono spuntate determinate check box nel form
iniziale automaticamente vengano barrate sezioni della scheda analisi
sull'altro foglio.

E' un po' intricata la cosa lo so :)
fin'ora vba l'ho evitato ma in questo caso mi sa che non si può e non lo
conosco per niente.
eSQueL
2006-09-20 19:25:31 UTC
Permalink
Post by Melba
Post by Mauro Gamberini
Post by eSQueL
Mi pare contorto.
Anche a me.
C'è un apposito pulsante.....
Scusate forse dovevo spiegare meglio il problema.
Si tratta di una scheda analisi su un foglio excel bloccato di sola lettura.
Un operatore immette dei dati e spunta delle caselle in un altro foglio
excel utilizzato come form. I dati inseriti verranno calcolati e
andranno a riempire questa scheda analisi che viene poi stampata e firmata.
La scheda analisi contiene molti campi e solo alcuni vanno compilati a
seconda del tipo di analisi appunto, gli altri vanno barrati.
Mi servirebbe che quando vengono spuntate determinate check box nel form
iniziale automaticamente vengano barrate sezioni della scheda analisi
sull'altro foglio.
E' un po' intricata la cosa lo so :)
fin'ora vba l'ho evitato ma in questo caso mi sa che non si può e non lo
conosco per niente.
Direi che, oltre che intricata, è molto diversa da come l'avevi postata.
In ogni caso, se operi su di un foglio di lavoro, la rotuine che ho postato
potrebbe funzionare, a patto che i dati nei campi che devono essere barrati
abbiano una caratteristica comune e costante, rilevabile tramite, ad es.,

Target.HasFormula = False (rileva la presenza di una formula)
o
Target.Value Like "*vattelapesca*" (rileva una sotto-stringa qualsiasi)

nel qual caso, la modificherai così:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim CellaModif As String

If Target.HasFormula = False Then Exit Sub
'o
If Target.Like "*vattelapesca*" Then Exit Sub

Range(CellaModif).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
With Selection.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End Sub



Se, invece, operi sulla form allora puoi fare così:

Private Sub OptionButton1_Click()
Dim CellaModif As String
Range("A1").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
With Selection.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End Sub

Private Sub TextBox1_Change()
Range("A1").Value = TextBox1.Value
End Sub

Io la vedo in queto modo, ma l'ultima parola spetta a Maurizio.

Ciao.

eSQueL
eSQueL
2006-09-20 20:13:14 UTC
Permalink
Scusa, ma con tutti questi taglia e incolla mi sono incartato (sono un tipo
distratto, che devo fare).

Sul foglio di lavoro così:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim CellaModif As String
CellaModif = Target.Address

If Target.HasFormula = False Then Exit Sub
'o
If Not Target.Value Like "*vattelapesca*" Then Exit Sub

If MsgBox("Barrare?", vbQuestion + vbYesNo) = vbYes Then
Range(CellaModif).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
With Selection.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
End Sub
Melba
2006-09-21 10:55:26 UTC
Permalink
Post by eSQueL
Scusa, ma con tutti questi taglia e incolla mi sono incartato (sono un tipo
distratto, che devo fare).
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CellaModif As String
CellaModif = Target.Address
If Target.HasFormula = False Then Exit Sub
'o
If Not Target.Value Like "*vattelapesca*" Then Exit Sub
If MsgBox("Barrare?", vbQuestion + vbYesNo) = vbYes Then
Range(CellaModif).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
With Selection.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
End Sub
marò..è semi arabo..
dove la dovrei inserire sta cosa?
cioè, mi sembra sia associata all'intero foglio di lavoro..
ma
If Target.HasFormula = False Then Exit Sub
a che false si riferisce? ce ne stanno tanti di false nel form..
--
Statistiche siti asteonline:
http://www.informascienza.it/asteonline/grafici.htm

Messaggi personali: http://www.mynewsgate.net/mp.php?u=10599
eSQueL
2006-09-21 11:42:38 UTC
Permalink
Post by Melba
Post by eSQueL
Scusa, ma con tutti questi taglia e incolla mi sono incartato (sono un tipo
distratto, che devo fare).
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CellaModif As String
CellaModif = Target.Address
If Target.HasFormula = False Then Exit Sub
'o
If Not Target.Value Like "*vattelapesca*" Then Exit Sub
If MsgBox("Barrare?", vbQuestion + vbYesNo) = vbYes Then
Range(CellaModif).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
With Selection.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
End Sub
marò..è semi arabo..
dove la dovrei inserire sta cosa?
cioè, mi sembra sia associata all'intero foglio di lavoro..
ma
If Target.HasFormula = False Then Exit Sub
a che false si riferisce? ce ne stanno tanti di false nel form..
--
http://www.informascienza.it/asteonline/grafici.htm
Messaggi personali: http://www.mynewsgate.net/mp.php?u=10599
L'evento Worksheet_Change ha un argomento (Target) che è l'intervallo
(cella) modificato. Nel caso di "If Target.HasFormula = False...", quindi,
il codcie verifica la presenza di una formula nell'intervallo. Se False, la
formula non c'è e allora esce senza barrare, viceversa barra.

Nel caso "Target.Value Like "*", si usa l'operatore Like per cercare
un'occorrenza specifica nella cella.

Se, però, sei del tutto a digiuno di vba ti conviene prima prendere un po'
di confidenza: da Excel ALT+F11, oppure dal menu Strumenti -> macro ->
visual basic editor. Da lì, accedi alla Guida in linea sia tramite "?"
(barra dei menù), sia tramite F1, che è il modo per attivare la guida
sensibile alla parola sulla quale si trova in quel momento il cursore
(incolla il codice nella finestra, posizionati sulla parola Like, premi F1 e
vedi che succede).

In ogni caso il codice di cui sopra va incollato nel modulo del Foglio (1,
2...n) nel quale desideri che si scateni l'evento.

Ciao.

eSQueL
Melba
2006-09-21 16:41:53 UTC
Permalink
Post by eSQueL
Se, però, sei del tutto a digiuno di vba ti conviene prima prendere un po'
di confidenza: da Excel ALT+F11, oppure dal menu Strumenti -> macro ->
visual basic editor. Da lì, accedi alla Guida in linea sia tramite "?"
(barra dei menù), sia tramite F1, che è il modo per attivare la guida
sensibile alla parola sulla quale si trova in quel momento il cursore
(incolla il codice nella finestra, posizionati sulla parola Like, premi F1 e
vedi che succede).
eh si mi sa che devo proprio approfondirlo sto vba, altrimenti non capisco quali
sono i punti che potrei modificare del sub che avevi scritto per addattarlo al
mio caso.
Comunque come suggerito da Mauro stasera ti mando i fogli per farti un'idea di
che mostro ho creato, ma non sei naturalmente tenuto a perderci tempo.

Barbara
--
Statistiche siti asteonline:
http://www.informascienza.it/asteonline/grafici.htm

Messaggi personali: http://www.mynewsgate.net/mp.php?u=10599
eSQueL
2006-09-21 16:50:40 UTC
Permalink
Post by Melba
Post by eSQueL
Se, però, sei del tutto a digiuno di vba ti conviene prima prendere un po'
di confidenza: da Excel ALT+F11, oppure dal menu Strumenti -> macro ->
visual basic editor. Da lì, accedi alla Guida in linea sia tramite "?"
(barra dei menù), sia tramite F1, che è il modo per attivare la guida
sensibile alla parola sulla quale si trova in quel momento il cursore
(incolla il codice nella finestra, posizionati sulla parola Like, premi F1 e
vedi che succede).
eh si mi sa che devo proprio approfondirlo sto vba, altrimenti non capisco quali
sono i punti che potrei modificare del sub che avevi scritto per addattarlo al
mio caso.
Comunque come suggerito da Mauro stasera ti mando i fogli per farti un'idea di
che mostro ho creato, ma non sei naturalmente tenuto a perderci tempo.
Barbara
--
http://www.informascienza.it/asteonline/grafici.htm
Messaggi personali: http://www.mynewsgate.net/mp.php?u=10599
mandali qui: ***@virgilio.it

Mauro Gamberini
2006-09-21 13:44:51 UTC
Permalink
Post by Melba
Si tratta di una scheda analisi su un foglio excel bloccato di sola lettura.
Un operatore immette dei dati e spunta delle caselle in un altro foglio
excel utilizzato come form. I dati inseriti verranno calcolati e andranno
a riempire questa scheda analisi che viene poi stampata e firmata.
La scheda analisi contiene molti campi e solo alcuni vanno compilati a
seconda del tipo di analisi appunto, gli altri vanno barrati.
Mi servirebbe che quando vengono spuntate determinate check box nel form
iniziale automaticamente vengano barrate sezioni della scheda analisi
sull'altro foglio.
E' un po' intricata la cosa lo so :)
fin'ora vba l'ho evitato ma in questo caso mi sa che non si può e non lo
conosco per niente.
Senza vedere come sono disposti i dati sui tuoi
fogli, stiamo parlando(scrivendo) di nulla.

Tre strade:

metti in rete un file che sia possibile valutare
e modificare; lo scarichiamo e te lo rimandiamo

spedisci il tuo file a eSQueL o al sottoscritto
(il mio indirizzo lo trovi nell'header del post;
rimuovi ciò che va rimosso)

riposti il tuo quesito qui:

microsoft.public.it.office.excel

cercando di essere chiaro(a) fin
dall'inizio e specificando come sono strutturati
i tuoi fogli, questo per evitare a tutti
(tu per primo(a)) perdite di tempo.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
Melba
2006-09-21 15:22:05 UTC
Permalink
Post by Mauro Gamberini
Senza vedere come sono disposti i dati sui tuoi
fogli, stiamo parlando(scrivendo) di nulla.
metti in rete un file che sia possibile valutare
e modificare; lo scarichiamo e te lo rimandiamo
spedisci il tuo file a eSQueL o al sottoscritto
(il mio indirizzo lo trovi nell'header del post;
rimuovi ciò che va rimosso)
microsoft.public.it.office.excel
cercando di essere chiaro(a) fin
dall'inizio e specificando come sono strutturati
i tuoi fogli, questo per evitare a tutti
(tu per primo(a)) perdite di tempo.
Troppo gentili. Se non scoccio opterò per la strada nr due, in rete non posso
metterlo

Barbara
--
Statistiche siti asteonline:
http://www.informascienza.it/asteonline/grafici.htm

Messaggi personali: http://www.mynewsgate.net/mp.php?u=10599
Continua a leggere su narkive:
Loading...