Grazie della collaborazione,
Andrea
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/
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
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
"Mauro Gamberini" ha scritto:
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.
Grazie Mauro,
ora funziona correttamente proprio come mi serviva.
Grazie ancora dell'aiuto,
Andrea
;-)