Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Formattazione condizionale con rientro testo

1 view
Skip to first unread message

AndreaExcel

unread,
Nov 26, 2007, 7:32:01 AM11/26/07
to
Ciao a tutti,
volevo sapere se è possibile fare in modo che, con la formattazione
condizionale, si possa indentare il testo di zero, uno o due punti a seconda
del verificarsi di determinate condizioni.
Eventualmente andrebbe bene anche una macro; se c'è qualcuno che mi può
aiutare fornisco i dettagli delle condizioni (semplici) e delle celle in cui
si trovano.

Grazie della collaborazione,
Andrea

Mauro Gamberini

unread,
Nov 26, 2007, 9:16:05 AM11/26/07
to
> volevo sapere se è possibile fare in modo che, con la formattazione
> condizionale, si possa indentare il testo di zero, uno o due punti a
> seconda
> del verificarsi di determinate condizioni.
> Eventualmente andrebbe bene anche una macro; se c'è qualcuno che mi può
> aiutare fornisco i dettagli delle condizioni (semplici) e delle celle in
> cui
> si trovano.
>

Non ho capito molto.
Prova a copia/incollare il codice qui sotto
nel modulo di codice del Foglio:

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column = 1 Then
Select Case .Value
Case Is = "Pippo"
.IndentLevel = 1
Case Is = "Pluto"
.IndentLevel = 2
Case Is = "Paperino"
.IndentLevel = 3
Case Else
.IndentLevel = 0
End Select
End If
End With
End Sub

Foglio1

A1: Pippo
A2: Pluto
A3: Paperino

Poi possiamo selezionare, anzichè una colonna,
una cella o gruppi di celle.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/


AndreaExcel

unread,
Nov 26, 2007, 10:13:02 AM11/26/07
to

Ciao Mauro,
direi che hai centrato bene il problema: ho applicato l'esempio che mi hai
fornito ed ottengo i risultati che mi aspetto. Quello che voglio ottenere è
la seguente situazione:
- le celle su cui applicare il rientro sono solo quella della seconda
colonna (la B)
- la condizione su cui applicare questa condizione si trova nella quinta
colonna (la E). In particolare:
- se il contenuto della cella è C o D, nella cella corrispondente a
quella riga, seconda colonna va applicato un rientro di 2;
- se il contenuto della cella è E, nella cella corrispondente a quella
riga, seconda colonna va applicato un rientro di 3;
- in tutti gli altri casi il rientro deve essere nullo.

Si riesce a ottenere questo risultato?

Grazie mille,
Andrea

Mauro Gamberini

unread,
Nov 26, 2007, 10:26:57 AM11/26/07
to
> direi che hai centrato bene il problema: ho applicato l'esempio che mi hai
> fornito ed ottengo i risultati che mi aspetto. Quello che voglio ottenere
> è
> la seguente situazione:
> - le celle su cui applicare il rientro sono solo quella della seconda
> colonna (la B)
> - la condizione su cui applicare questa condizione si trova nella quinta
> colonna (la E). In particolare:
> - se il contenuto della cella è C o D, nella cella corrispondente a
> quella riga, seconda colonna va applicato un rientro di 2;
> - se il contenuto della cella è E, nella cella corrispondente a quella
> riga, seconda colonna va applicato un rientro di 3;
> - in tutti gli altri casi il rientro deve essere nullo.
>
> Si riesce a ottenere questo risultato?
>

Prova un po':

Private Sub Worksheet_Change(ByVal Target As Range)

With Target

If .Column = 2 Then
Select Case .Offset(0, 3).Value
Case "C", "D"
.IndentLevel = 2
Case "E"


.IndentLevel = 3
Case Else
.IndentLevel = 0
End Select

ElseIf .Column = 5 Then
Select Case .Value
Case "C", "D"
.Offset(0, -3).IndentLevel = 2
Case "E"
.Offset(0, -3).IndentLevel = 3
Case Else
.Offset(0, -3).IndentLevel = 0
End Select
End If

End With

End Sub


AndreaExcel

unread,
Nov 26, 2007, 10:35:01 AM11/26/07
to
Purtroppo non funziona:
ho messo del testo nella seconda colonna colonna, i valori da testare nella
quinta, ma il testo nelle righe delle seconda colonna non viene indentato
sulla base dei valori presenti nella quinta.

"Mauro Gamberini" ha scritto:

Mauro Gamberini

unread,
Nov 26, 2007, 10:57:50 AM11/26/07
to
> Purtroppo non funziona:
> ho messo del testo nella seconda colonna colonna, i valori da testare
> nella
> quinta, ma il testo nelle righe delle seconda colonna non viene indentato
> sulla base dei valori presenti nella quinta.
>

Hai copia/Incollato nel modulo del foglio?
Stai inserendo valori *identici*
(E e non e)?

A me funziona.

Faccio presente che stiamo utilizzando l'evento
Change del foglio, quindi devi modificare o
la cella B o la cella E della riga.

Se invece vuoi la tua *formattazione* su valori
che hai già inserito, copia/incolla questa in un
modulo standard(Inserisci-->Modulo) di vba:

Public Sub m()

Dim rng As Range
Dim c As Range
Dim ur As Long

With ActiveSheet
ur = .Range("B" & Rows.Count).End(xlUp).Row
Set rng = .Range("B1:B" & ur)
End With

For Each c In rng
Select Case c.Offset(0, 3).Value
Case "C", "D"
c.IndentLevel = 2
Case "E"
c.IndentLevel = 3
Case Else
c.IndentLevel = 0
End Select
Next

End Sub

Dove personalmente sostituirei:

With ActiveSheet

con

With Worksheets("NomeDelTuoFoglio")

se l'operazione devi farla su di un unico foglio.
Se(se) utilizzi quasta seconda soluzione, elimina(o commenta)
la prima.

AndreaExcel

unread,
Nov 27, 2007, 4:28:00 AM11/27/07
to
"Mauro Gamberini" ha scritto:

Grazie Mauro,
ora funziona correttamente proprio come mi serviva.

Grazie ancora dell'aiuto,
Andrea

Mauro Gamberini

unread,
Nov 27, 2007, 4:37:05 AM11/27/07
to
> ora funziona correttamente proprio come mi serviva.
>

;-)

0 new messages