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

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 04/12/24 15:39

se posso allegare il file dimmi come faccio
trittico69
Utente Senior
 
Post: 546
Iscritto il: 16/08/09 18:41

Sponsor
 

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 05/12/24 20:48

Un'altra cosa il bordo che compare sulla riga è troppo spesso
trittico69
Utente Senior
 
Post: 546
Iscritto il: 16/08/09 18:41

Re: Aumenta altezza riga in base valore cella

Postdi Anthony47 » 06/12/24 00:24

[vorrei che] se C6 non è vuoto stampa solo il primo foglio,se C51 non è vuoto stampa i primi 2 fogli, se C96 non è vuoto stampa i primi tre fogli,se C141 non è vuoto stampa i primi 4 fogli, se C186 non è vuoto stampa i primi 5 fogli, se C231 non è vuoto stampa i primi 6 fogli, se C276 non è vuoto stampa i primi 7 fogli, se C321 non è vuoto stampa i primi 8 fogli, se C366 non è vuoto stampa i primi 9 fogli, tutte le celle menzionate contengono formule

Potrebbe fuzionare questa, eventualmente da associare a un pulsante inserito sul foglio da stampare:
Codice: Seleziona tutto
Sub TriPrint()
Dim cPg As Long, myC As Range
'
For Each myC In Range("C6,C51,C96,C141,C186,C231,C276,C321,C366")
'Conta pagine:
    If Len(myC.Value) = 0 Then
        Exit For
    Else
        cPg = cPg + 1
    End If
Next myC
'
If cPg > 0 Then
    'scegli printer
    SelPrint = Application.Dialogs(xlDialogPrinterSetup).Show
    If SelPrint = False Then
        MsgBox "Stampa Cancellata"
        Exit Sub
    End If
    '
    ActiveSheet.PrintOut From:=1, To:=cPg, Copies:=1, IgnorePrintAreas:=False
End If
End Sub


ho provato ad eliminare una riga e siccome le celle eliminate sono collegate con formula in altro foglio, c'è modo di far si che o aggiungo o elimino righe in automatico le coordinate celle formule si aggiornano?
Se le formule puntano ad “altro foglio dello stesso file” allora le formule si aggiornano man mano che togli e aggiungi righe. Se puntano “al altro foglio di altro file” allora le formule si aggiornano se l’altro file e’ aperto mentre aggiungi e togli righe; se invece l’altro foglio e’ chiuso i collegamenti vengono alterati, e’ abbastanza problematico ricostruirli

e se si puo tornare indietro, una volta partita la macro, anche solo di qualche passo
Parli della macro che aggiunge le righe?
Se Sì, allora questa macro tutte le volte che la lanci elimina la prima "riga aggiunta" che viene trovata prima della riga attiva (quindi, ragionevolmente, l'ultima riga aggiunta in ordine di tempo):
Codice: Seleziona tutto
Sub KillLast()
Dim lAdd As Long
'
lAdd = Evaluate("Max(If(A1:A" & ActiveCell.Row & " = "" . "",row(A1:A" & ActiveCell.Row & "),""""))")
If lAdd > 0 Then
    Application.EnableEvents = False
    Cells(lAdd, 1).EntireRow.Delete Shift:=xlUp
    Application.EnableEvents = True
End If
End Sub

Anche questa la puoi associare a un pulsante per eseguirla piu’ rapidamente, o a una combinzione di tasti, o ad altra automazione compatibile con la versione di Office che usi (vedi viewtopic.php?f=26&t=103893&p=647678#p647678)

Un'altra cosa il bordo che compare sulla riga è troppo spesso
Invece che xlThick puoi usare (nel codice della macro) xlMedium oppure xlThin

Speriamo di non aggiungere altro a questa discussione...
Avatar utente
Anthony47
Moderatore
 
Post: 19476
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 06/12/24 09:55

la macro stampa non parte, ho messo pulsante e assegnato la macro ad esso ma non da segni di vita
per la macro torna indietro, è per quella che inserisce il bordo
trittico69
Utente Senior
 
Post: 546
Iscritto il: 16/08/09 18:41

Re: Aumenta altezza riga in base valore cella

Postdi Anthony47 » 07/12/24 01:01

la macro stampa non parte
Probabilmente ho interpretato male la tua descrizione alquanto “stringata”; riproviamo con questa:
Codice: Seleziona tutto
Sub TriPrint2()
Dim cPg As Long, rArr, I As Long
'
'Calcola quante pagine
rArr = Array(6, 51, 96, 141, 186, 231, 276, 321, 366)   'Quali righe testare
For I = 0 To UBound(rArr)
    If Len(Cells(rArr(I), "C").Value) > 0 Then cPg = I + 1
Next I
'
Debug.Print "cPg=" & cPg
If cPg > 0 Then
    'scegli printer
    SelPrint = Application.Dialogs(xlDialogPrinterSetup).Show
    If SelPrint = False Then
        MsgBox "Stampa Cancellata"
        Exit Sub
    End If
    '
    ActiveSheet.PrintOut From:=1, to:=cPg, Copies:=1, IgnorePrintAreas:=False
End If
End Sub


la macro torna indietro, è per quella che inserisce il bordo
Per tornare indietro di un passo sull’ampliamento di riga + bordo superiore prova a usare questa macro:
Codice: Seleziona tutto
Sub BackOne()
Dim I As Long
'
defH = 22               '<<< L'Altezza in pixel se cella vuota
'
For I = ActiveCell.Row To 1 Step -1
    If Cells(I, 1).Borders(xlEdgeTop).LineStyle = 1 Then
        Cells(I, 1).EntireRow.Borders(xlEdgeTop).LineStyle = xlNone
        Cells(I, 1).EntireRow.RowHeight = defH
        Exit For
    End If
Next I
End Sub
Avatar utente
Anthony47
Moderatore
 
Post: 19476
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 07/12/24 10:34

le macro delle stampe vanno bene tutte e due , sono io un ca***ne la colonna era la B, l'ho modificato io adesso, però stampa anche i foglio successivo.
se ci fosse la possibilità di vedere prima l'anteprima
trittico69
Utente Senior
 
Post: 546
Iscritto il: 16/08/09 18:41

Re: Aumenta altezza riga in base valore cella

Postdi Anthony47 » 07/12/24 16:49

le macro delle stampe vanno bene tutte e [. . . ] però stampa anche i foglio successivo
Se dopo una stampa apri la “finestra Immediata” del vba dovresti vedere la scritta “cPg=x”, dove X indica il numero di pagine che la macro ha comandato di stampare.
Questo “X” e’ coerente con il contenuto delle celle di colonna B (non C, giusto) delle righe 6, 51, 96, 141, 186, 231, 276, 321, 366? E’ coerente con il numero di pagine stampate?

Comunque io lavorerei impostando l’area di stampa, non il numero di pagine: che relazione c’e’ tra le celle che andiamo a controllare e il range dell’area da stampare? E’ possibile che pag. 1 finisca su riga 50 e pag. 2 cominci su riga 52, o c’e’ un’altra relazione che possiamo usare? E in quanto a colonne, quali sono quelle da stampare?

La print preview credo che non risolva nulla, perche’ fa vedere la stampa di tutto il documento (salvo che non sia impostata un’area di stampa, ma allora siamo gia’ con la soluzione fatta, vedi proposta precedente)
Avatar utente
Anthony47
Moderatore
 
Post: 19476
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 08/12/24 15:12

dalla riga 1 alla 42 compresa, poi ci sono tre celle vuote e va dalla 46 all'87.
e se può servire ogni pagina è contornata da un bordo spesso
trittico69
Utente Senior
 
Post: 546
Iscritto il: 16/08/09 18:41

Re: Aumenta altezza riga in base valore cella

Postdi Anthony47 » 09/12/24 01:03

Per impostare l’area di stampa servirebbero anche le colonne da stampare; e almeno l’area di pag 3 per avere conferma di un’idea che mi son fatto sulla base dell’area delle prime due pagine

Ma la verifica sulla “finestra Immediata” che esito ha dato?
Avatar utente
Anthony47
Moderatore
 
Post: 19476
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 10/12/24 08:11

dalla colonna B alla K
trittico69
Utente Senior
 
Post: 546
Iscritto il: 16/08/09 18:41

Re: Aumenta altezza riga in base valore cella

Postdi Anthony47 » 10/12/24 15:39

[...] e almeno l’area di pag 3 per avere conferma di un’idea che mi son fatto sulla base dell’area delle prime due pagine


Ma la verifica sulla “finestra Immediata” che esito ha dato?


Tutte le risposte aiutano...
Avatar utente
Anthony47
Moderatore
 
Post: 19476
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 10/12/24 18:14

Tutte le pagine di stampa sono uguali stesso numero di righe stesso numero di colonne e lo stesso spazio tra una e l'altra. Per il fatto della finestra immediata non ho capito bene come fare
trittico69
Utente Senior
 
Post: 546
Iscritto il: 16/08/09 18:41

Re: Aumenta altezza riga in base valore cella

Postdi Anthony47 » 10/12/24 23:23

Sulla base delle mie migliori stime:
Codice: Seleziona tutto
Sub TriPrint33()
Dim cPg As Long, myC As Range
'
For Each myC In Range("B6,B51,B96,B141,B186,B231,B276,B321,B366")
'Conta pagine:
    If Len(myC.Value) = 0 Then
        Exit For
    Else
        cPg = myC.Row + 42 - 5
    End If
Next myC
Debug.Print "cPg=" & cPg
'
If cPg > 6 Then
    'scegli printer
    SelPrint = Application.Dialogs(xlDialogPrinterSetup).Show
    If SelPrint = False Then
        MsgBox "Stampa Cancellata"
        Exit Sub
    End If
    '
    Debug.Print "Print area is: " & "$B$1:$K$" & cPg
    ActiveSheet.PageSetup.PrintArea = ""
    ActiveSheet.PageSetup.PrintArea = "$B$1:$K$" & cPg
    Application.PrintCommunication = False
    ActiveSheet.PageSetup.FitToPagesWide = 1
    Application.Wait (Now + TimeValue("0:00:02"))
    Application.PrintCommunication = True
    ActiveSheet.PrintOut IgnorePrintAreas:=False
End If
End Sub
Avatar utente
Anthony47
Moderatore
 
Post: 19476
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 12/12/24 14:40

ti allego il file che deve stampare il foglio sanitario
https://www.swisstransfer.com/d/dd60482 ... 618adc3c63
il tuo codice non riesco a farlo funzionare
trittico69
Utente Senior
 
Post: 546
Iscritto il: 16/08/09 18:41

Re: Aumenta altezza riga in base valore cella

Postdi Anthony47 » 12/12/24 23:09

Nel foglio SANITARIO le celle controllate (B6,B51,B96,B141 etc etc) non sono mai vuote (infatti hai dovuto impostare “Nascondi gli Zero”), quindi il controllo fatto con If Len(myC.Value) =0 Then fallisce
Se quelle celle, quando compilate su foglio MATRICOLA, hanno sempre almeno 2 caratteri allora si potrà usare
Codice: Seleziona tutto
If Len(myC.Value) < 2 Then

Inoltre il foglio aveva impostato un’area di stampa (probabilmente residuo di prove con la Sub TriPrint33) ma anche l’opzione “Riduci la stampa su 1 sola pagina”

Risolvendo queste situazioni, il codice della Sub TriPrint33 diventa:
Codice: Seleziona tutto
Sub TriPrint33()
Dim cPg As Long, myC As Range
'
For Each myC In Range("B6,B51,B96,B141,B186,B231,B276,B321,B366")
'Conta pagine:
    If Len(myC.Value) < 2 Then                          'MM
        Exit For
    Else
        cPg = myC.Row + 42 - 5
    End If
Next myC
Debug.Print "cPg=" & cPg
'
If cPg > 6 Then
    'scegli printer
    SelPrint = Application.Dialogs(xlDialogPrinterSetup).Show
    If SelPrint = False Then
        MsgBox "Stampa Cancellata"
        Exit Sub
    End If
    '
    Debug.Print "Print area is: " & "$B$1:$K$" & cPg
    ActiveSheet.PageSetup.PrintArea = ""
    ActiveSheet.PageSetup.PrintArea = "$B$1:$K$" & cPg
    Application.PrintCommunication = False
    ActiveSheet.PageSetup.FitToPagesWide = 1
    ActiveSheet.PageSetup.FitToPagesTall = 0                '++
    Application.Wait (Now + TimeValue("0:00:02"))
    Application.PrintCommunication = True
    ActiveSheet.PrintOut IgnorePrintAreas:=False
End If
End Sub

La riga marcata MM e’ modificata rispetto al codice iniziale, quella marcata ++ e’ stata aggiunta
Per assicurare che ogni blocco venga stampato su una pagina allora e’ meglio che:
-rimuovi tutte le interruzioni riga presenti al momento
-inserisci una interruzione linea sulla riga dove comincia ogni blocco da stampare (ovviamente da fare solo una volta prima di cominciare a usare il “modello”)

Prova...
Avatar utente
Anthony47
Moderatore
 
Post: 19476
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 13/12/24 10:19

fatto tutto, la macro print33 non da segni di vita
trittico69
Utente Senior
 
Post: 546
Iscritto il: 16/08/09 18:41

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 13/12/24 10:50

e il foglio matricola non si adatta alla pagina di stampa.
per i nomi possono essere anche di due lettere(nomi cinesi) quindi dovremmo mettere superiori o uguali a 2
trittico69
Utente Senior
 
Post: 546
Iscritto il: 16/08/09 18:41

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 13/12/24 12:59

rettifico , la stampa va benissimo, mentre il foglio matricola continua a non adattarsi.
per il fatto delle due lettere dimmi se è corretto così
Codice: Seleziona tutto
If Len(myC.Value) <= 2 Then
trittico69
Utente Senior
 
Post: 546
Iscritto il: 16/08/09 18:41

Re: Aumenta altezza riga in base valore cella

Postdi Anthony47 » 13/12/24 16:21

il foglio matricola continua a non adattarsi
Quale e' il contenuto di foglio MATRICOLA (hai condiviso un file con fogli vuoti)?

per il fatto delle due lettere dimmi se è corretto così
Codice: Seleziona tutto
If Len(myC.Value) <= 2 Then
No, deve rimanere If Len(myC.Value) < 2 Then
Avatar utente
Anthony47
Moderatore
 
Post: 19476
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Aumenta altezza riga in base valore cella

Postdi trittico69 » 14/12/24 07:50

Quindi se le lettere sono due la macro non le considera?
Per quanto riguarda il foglio matricola anche vuoto così come te l'ho allegato a me non adatta, mentre il foglio sanitario si.
trittico69
Utente Senior
 
Post: 546
Iscritto il: 16/08/09 18:41

PrecedenteProssimo

Torna a Applicazioni Office Windows


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


Chi c’è in linea

Visitano il forum: sbs e 11 ospiti