Condividi:        

Aumenta altezza riga in base valore cella

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Aumenta altezza riga in base valore cella

Postdi trittico69 » 30/11/24 12:13

Salve spero di postare nel posto giusto.
Salve qualcuno mi può girare una macro che aumenta l'altezza(che inserirò io) della riga se la cella A5:A100 ha un valore, altrimenti l'altezza (riga con cella iniziale vuota) avrà un altezza sempre che imposterò io?
Grazie
trittico69
Utente Senior
 
Post: 500
Iscritto il: 16/08/09 18:41

Sponsor
 

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 01/12/24 10:39

E poi uno simile che invece di aumentare la riga Mi inserisce una riga sopra la cella piena sempre della colonna A
trittico69
Utente Senior
 
Post: 500
Iscritto il: 16/08/09 18:41

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 01/12/24 14:52

E poi che mi permetto di eliminare queste righe una volta che ho ripulito la colonna
Perché altrimenti quello che è scritto più in giù va a finire nel secondo foglio
trittico69
Utente Senior
 
Post: 500
Iscritto il: 16/08/09 18:41

Re: Aumenta altezza riga in base valore cella

Postdi Dylan666 » 02/12/24 14:33

Sposto nella sezione corretta
Avatar utente
Dylan666
Moderatore
 
Post: 40110
Iscritto il: 18/11/03 16:46

Re: Aumenta altezza riga in base valore cella

Postdi Anthony47 » 02/12/24 16:25

Ovviamente le opzioni (aumentare l’altezza di righe / inserire una riga) sono alternative, devi scegliere se attuare l’una o l’altra.
Per variare l’altezza di una riga a seconda che la colonna A di quella riga sia vuota o piena:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
'Imposta altezza se Celle non vuote
'
Dim ckArea As String, defH As Single, enhH As Single
Dim myArea As Object, myC As Range
'
'Imposta i parametri:
ckArea = "A1:A100"      '<<< L'area da esaminare
defH = 22               '<<< L'Altezza in pixel se cella vuota
enhH = 44               '<<< . . . . . . . . . .se cella piena
'
Set myArea = Application.Intersect(Target, Range(ckArea))
If Not myArea Is Nothing Then
    For Each myC In myArea
        If myC.Value = "" Then
            myC.EntireRow.RowHeight = defH
        Else
            myC.EntireRow.RowHeight = enhH
        End If
    Next myC
End If
End Sub

Le righe marcate <<< sono da personalizzare come da commento

Per inserire/togliere riga:
Codice: Seleziona tutto
 Private Sub Worksheet_Change(ByVal Target As Range)
'Aggiunge /Toglie riga vuota prima di Target
'    USARE CON CAUTELA
'
Dim ckArea As String, defH As Single, enhH As Single
Dim myArea As Object, myC As Range
'
'Imposta i parametri:
''ckArea = "A1:A100"      '<<< L'area da esaminare NO: Vedi TESTO
'
Set myArea = Application.Intersect(Target, Range("ckArea"))
If Not myArea Is Nothing Then
    Application.EnableEvents = False
    For Each myC In myArea
        If myC.Value = "" Then
            If Application.WorksheetFunction.CountA(myC.Offset(-1, 0).EntireRow) = 1 And _
               myC.Offset(-1, 0).Value = " . " Then
                myC.Offset(-1, 0).EntireRow.Delete Shift:=xlUp
            Else
                Beep
            End If
        Else
            If myC.Offset(-1, 0).Value <> " . " Then
                myC.EntireRow.Insert Shift:=xlDown
                myC.Offset(-1, 0).Value = " . "         'Marker di riga aggiunta
            End If
        End If
    Next myC
    Application.EnableEvents = True
End If
End Sub

Come avrai notato non viene usato il valore di ckArea per definire l’area da esaminare; perche’ man mano che aggiungi righe l’area dovrebbe essere aggiornata. Si potrebbe fare via macro, ma il mio suggerimento e’ che nel foglio di lavoro crei un intervallo a cui assegni il nome ckArea:
-selezioni A1:A100 (se questa e’ l’area su cui si vuol lavorare); nella “Casella Nome” di Excel (quella che si trova a sinistra della “Barra delle Formula” e che normalmente contiene l’indirizzo della cella) scrivi ckArea e premi Enter
In questo modo quando eventualmente inserisci e togli righe l’intervallo di lavoro viene automaticamente allungato /accorciato.
Per evitare di cancellare righe non volute o di aggiungerne piu’ di una, la colonna A della riga aggiunta viene compilata col valore “ . “ (spazio-punto-spazio) e uso questo contenuto per decidere cosa fare (evitare di cancellare righe in modo indesiderato ed evitare di inserire piu’ righe modificando la stessa cella piu’ volte

Ambedue le macro sono di tipo “WorkSheet-Change”, una o l’altra va inserita nel “modulo vba del foglio su cui lavori”. Per fare questo:
-tasto dx sul tab col nome del foglio di lavoro; seleziona Visualizza codice; copia il codice e incollalo nella pagina del vba che si e’ aperta.
-modifica le righe da personalizzare

Poi torna sul foglio excel e prova

TUTTE LE PROVE DA FARE SU UNA COPIA DEL VERO FILE
Avatar utente
Anthony47
Moderatore
 
Post: 19442
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Aumenta altezza riga in base valore cella":


Chi c’è in linea

Visitano il forum: Nessuno e 21 ospiti

cron