Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

VBA x Stampare

  • Messaggi
  • ABCDEF@Excel
    00 13/07/2020 17:08
    Ciao a tutti
    Tramite un ciclo For nascondo le righe da NON visualizzare, invece per stampare le stampa tutte, presumo che la cosa migliore sarebbe di copiarle in un nuovo foglio mà il codice si complica parecchio. Sapete se "possibile", assegnare alcune Aree al NOME Stampa? Non riesco far funzionare le due righe RefersToR1C1 + FormulaLocal...con Msg (presumo sia colpa degli apici)
    Msg =...Foglio1!$A$95:$W$141;Foglio1!$A$236:$W$282
    Grazie mille
    Sub aaa()
    Dim ur As Long, x As Long, Msg As String, a
    Cells.EntireRow.Hidden = False
    ur = Range("B" & Rows.Count).End(xlUp).Row
        For x = 1 To ur Step 47
            If Not Cells(x + 9, 14) = "X" Then
                Range(Rows(x), Rows(x + 46)).EntireRow.Hidden = True
            Else
                Msg = Msg & "Foglio1!$A$" & x & ":$W$" & x + 46 & ";"
            End If
        Next
        Msg = Left(Msg, Len(Msg) - 1)
        Sheets("dati1").Cells(1, 1).FormulaLocal = "=" & Msg
        With ActiveWorkbook.Names("Stampa")
            .Name = "Stampa"
            '.RefersToR1C1 = "=" & Msg
            '.FormulaLocal = "=" & Msg
            .Comment = ""
        End With
    MsgBox "fatto"
    End Sub
  • OFFLINE
    gattodimarmo1980
    Post: 299
    Registrato il: 03/10/2015
    Città: ALBAREDO PER SAN MARCO
    Età: 44
    Utente Junior
    2003
    00 13/07/2020 18:33
    Ciao ABCDEF@Excel se ti va bene io ho una soluzione momentanea perchè magari hai una necessità di stampare urgente non tutte le righe,finchè qualcuno corregga il tuo codice.Nascondi quello che vuoi e poi riporta nel foglio2 con questa macro e poi stampa.
    Sub riporta()
    Application.ScreenUpdating = False
    Dim Ur As Long, K As Long, ur1 As Long
    Dim wk As Worksheet
    Set wk = Worksheets("foglio2")
    Ur = Range("A" & Rows.Count).End(xlUp).Row
    For K = 1 To Ur
    If Cells(K, 1).EntireRow.Hidden = False Then
    ur1 = wk.Range("A" & Rows.Count).End(xlUp).Row + 1
    Cells(K, 1).EntireRow.Copy
    wk.Range("A" & ur1).PasteSpecial xlPasteValues
    End If
    Next K
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    Set wk = Nothing
    End Sub
    Spero di aver capito giusto.Nascondo le righe da non visualizzare non è la stessa cosa. Non basta dire uno o l'altro?
    Ciao Gattodimarmo
    [Modificato da gattodimarmo1980 13/07/2020 18:38]
  • OFFLINE
    dodo47
    Post: 2.892
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    10 13/07/2020 18:49
    Re:
    ABCDEF@Excel, 13/07/2020 17:08:

    Ciao a tutti
    Tramite un ciclo For nascondo le righe da NON visualizzare, invece per stampare le stampa tutte.....



    ma come fa a stampare anche le righe nascoste??

    saluti




    Domenico
    Win 10 - Excel 2016
  • ABCDEF@Excel
    10 13/07/2020 19:24
    Ciao dodo47
    Non lo sò (non ho la stampante, verificato in anteprima = OK), mi è stato detto nel post https://www.freeforumzone.com/d/11709117/Assegnare-automaticamente-nomi-in-sequenza-corretta-a-Range-uguali-tra-loro/discussione.aspx

    Adesso che me l'hai ricordato, sono proprio fuso...
    Comunque, se fosse "senza nascondere le righe", non si può fare?
  • OFFLINE
    gattodimarmo1980
    Post: 300
    Registrato il: 03/10/2015
    Città: ALBAREDO PER SAN MARCO
    Età: 44
    Utente Senior
    2003
    10 13/07/2020 19:34
    Ciao DoDo47 se nascondi le righe e stampi vengono stampate tutte anche quelle che non le vedi.
    Ciao
    ABCDEF@Excel
    se vuoi rivisuallizare le righe nascoste dopo aver usato la mia macro usa questo codice
    Sub Visualizza()
    Cells.EntireRow.Hidden = False
    Cells(1, 1).Select
    End Sub
    Mi sono dimenticato.Ciao a (tutti) Matteo
    [Modificato da gattodimarmo1980 13/07/2020 19:38]
  • OFFLINE
    dodo47
    Post: 2.893
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    10 14/07/2020 09:48
    Re:
    gattodimarmo1980, 13/07/2020 19:34:

    Ciao DoDo47 se nascondi le righe e stampi vengono stampate tutte anche quelle che non le vedi.
    Ciao



    credo che tu abbia le idee confuse Matteo.

    saluti




    [Modificato da dodo47 14/07/2020 09:52]
    Domenico
    Win 10 - Excel 2016
  • ABCDEF@Excel
    10 14/07/2020 16:21
    A parte l'errore iniziale che "stampa tutto", mi era venuta l'idea di creare un NOME con tutte le Aree selezionate da un ciclo For. Ci sono riuscito con questo...
    Ps. Nel mio caso si tratta di una 10/20/30/40 Aree, non sò se funzionerà con molte Aree in più.
    Option Explicit
    Sub aaa()
    Dim ur As Long, x As Long, Rr1 As Range, Rr As Range
    'Cells.EntireRow.Hidden = False
    ur = Range("B" & Rows.Count).End(xlUp).Row
        For x = 1 To ur Step 47
            If Cells(x + 9, 14) = "X" Then
                If Rr1 Is Nothing Then
                    Set Rr1 = Range("Foglio1!A" & x & ":W" & x + 46)
                Else
                    Set Rr = Range("Foglio1!A" & x & ":W" & x + 46)
                    Set Rr1 = Application.uni0n(Rr1, Rr)
                End If
            End If
        Next
        With ActiveWorkbook.Names("Stampa")
            .Name = "Stampa"
            .RefersTo = Rr1
        End With
    Set Rr = Nothing
    Set Rr1 = Nothing
    MsgBox "fatto"
    End Sub


    EDIT. Il forum cambia Union con Uni0n
    [Modificato da ABCDEF@Excel 14/07/2020 16:48]
  • OFFLINE
    dodo47
    Post: 2.896
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    10 14/07/2020 17:01
    ciao
    quando scrivi : Set Rr1 = Application.uni0n(

    il vb ti elenca gli argomenti della funzione e se leggi sono 30: Arg1. Arg2,....Arg30)

    in questi casi (personalmente) preferisco accodare in un foglio di appoggio i range da stampare, magari in un foglio nascosto che, prima di stampare, scopri, e poi nascondi nuovamente.

    (ma perchè crei il nome stampa?)

    saluti




    [Modificato da dodo47 14/07/2020 17:02]
    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    gattodimarmo1980
    Post: 301
    Registrato il: 03/10/2015
    Città: ALBAREDO PER SAN MARCO
    Età: 44
    Utente Senior
    2003
    00 14/07/2020 18:39
    Buona sera DoDo47 io ho le idee confuse ma si potrebbe avere un file
    per provare a stampare . Saluti Matteo
  • ABCDEF@Excel
    01 14/07/2020 18:43
    >>>presumo che la cosa migliore sarebbe di copiarle in un nuovo foglio
    In effetti, visto gli Arg30 dovrò rivalutare il tutto.

    Ciao dodo47
    A dire il vero non mi interessava il NOME stampa (che poi non stampa, solo selezionare le varie Aree scelte dal For). Era da tempo che cercavo un metodo per lavorare su Aree diverse. Ex Se non conosco quante Aree verrano scelte, non potevo scrivere set Rr1 = Uni0n(area1,area2,area3,area4 ecc ecc). Tramite la rete ho trovato la riga Set Rr1 = Application.uni0n(Rr1, Rr) che aggiunge più Aree e mi sembrava una cosa buona.
    Grazie per Arg1. Arg2,....Arg30 (ho visto). Io non sono capace d'usare l'help, Finestra immediata, variabili ed espressioni di controllo

    Ps. Penso (non saprei), gli stampava tutto perchè per ogni Area ha messo un'interruzione di pagina e presumo che uscivano fogli bianchi.
    [Modificato da ABCDEF@Excel 14/07/2020 19:12]
  • ABCDEF@Excel
    10 15/07/2020 14:20
    Ciao dodo47
    Quel post è un casino, non posso creare un foglio nuovo (causa le dimensioni delle righe e colonne). Allora copio le Aree in altre colonne (BB:BW), mi è rimasto il problema dell'interruzione di pagina. Potrei spostare "l'Area di Stampa" in (BB:BW), mà ho l'impressione che quando avrò solo 2 pagine da stampare (ne usciranno molte di più). Tramite codice devo usare (BB:BW), per una Multi_Stampa penso di non aver problemi (farò un ciclo for). Invece per un Unico_PDF, dovrei... prendere la 1° area e creare la 1° pagina del PDF, poi la 2° area e creare la 2° pagina del PDF ecc ecc
    Conosci il comando per farlo andare nella pagina successiva del PDF?
    Ps. Gli ho allegato un files provvisorio. Grazie di tutto
  • OFFLINE
    dodo47
    Post: 2.900
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    10 15/07/2020 16:42
    ciao
    Via veloce:
    duplichi il foglio (in questo modo vengono salvaguardate altezza e larghezza colonne), elimini le righe che non ti servono e stampi.
    -----------------------------------------------------------------

    Per quanto riguarda i salto pagina non c'è nessun comando ABC.....

    quando ci sono salti pagina in excel, automaticamente il pdf viene creato con più pagine....

    Forse non capisco cosa vuoi)

    saluti



    Domenico
    Win 10 - Excel 2016
  • ABCDEF@Excel
    10 17/07/2020 02:03
    Grazie per il (duplichi), mi ero scordato pure di lui.
    Con molta fatica, penso di riuscire (pure con l'area di stampa che viene duplicata)
  • 15MediaObject4,501013 9