Condividi:        

macro in excel

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: macro in excel

Postdi apocrimata75 » 30/05/11 22:58

ho semplicemente cancellato quella riga e sembra funzionare tutto, che dici lascio così o ricopio il tuo nuovo codice?
Ho dovuto salvare come cartella con attivazione macro altrimenti il famoso menu' di convalida dati non funziona.

Il file è arrivato a 31mb invece dei 18, come posso ridurlo?
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Sponsor
 

Re: macro in excel

Postdi Avatar3 » 30/05/11 23:05

L'area dipende dal tipo di stampante
io l'ho dovuta inserire e adattare al foglio 1 a 1 altrimenti stampava una riga in un secondo foglio
ma ripeto dipende dai margini della stampante (ogni stampante ha i suoi)

Le macro vanno attivate altrimenti non funziona nulla

Il file è di 31 mB perché proviene da excel2003 che non comprime gli oggetti ma è più veloce nel calcolo e nell'esecuzione di macro
per ridurre il "peso" del file lo salvi come file per excel 2010 (in pratica .xlsx e non .xls) e tornerà intorno ai 18 Mb
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: macro in excel

Postdi apocrimata75 » 30/05/11 23:06

ho provato a stampare dal nr. 2 al nr. 17 e riappare l'errore, forse è impostato in modo che debba stampare partendo sempre da 1?
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: macro in excel

Postdi Avatar3 » 31/05/11 00:00

Si in effetti c'era un bug
sostituisci la macro con questa

Codice: Seleziona tutto
Dim inizio, Fine, I, LN, ZN, col, ColN, Riga, ColC As Integer
Dim Art As String
' aggiorna_stampa Macro
   inizio = Range("BA8").Value
   Fine = Range("BI8").Value
   Riga = 0
   col = 0
   For I = inizio To Fine
        If I = inizio Then
        col = 1
        Else
            col = col + 1
        End If
   Art = "1"
   LN = Len(I)
   For ZN = 1 To 12 - Len(I)
   Art = Art & 0
   Next ZN
   ColC = col Mod 4
   If ColC = 0 Then ColC = 4
   If ColC = 1 Then Riga = Riga + 10
   ColN = 12 * ColC - 11
   Cells(Riga, ColN).Value = Val(Art & I)
   If I Mod 16 = 0 And I = Fine Then
   Riga = 0
   Calculate

    Range("A1:AV40").Select
   ' ActiveSheet.PageSetup.PrintArea = "$A$1:$AV$40"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    ', IgnorePrintAreas:=False
    End If

   Next I
    Range("AX1").Select
End Sub


Rimane solo un piccolo controllo che metterei e riguarda il numero dei record in stampa che dovrebbe essere 16 o multiplo di 16
se per esempio metti 5 come inizio e 18 come fine avrai le ultime due etichette con il numero precedentemente stampato
si potrebbe pensare di effettuare una cancellazione di tutti i numeri "gialli" ma avrai due etichette senza valori (con errori)
meglio sarebbe inserire un messaggio che in questi casi avverta che non hai inserito un multiplo di 16 e che corregge la cella BI8 portandolo al primo numero utile multiplo di 16 (nell'esempio a 20 o 36 se hai scelto 34 etc etc)
Ma lo vediamo in un secondo tempo
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: macro in excel

Postdi apocrimata75 » 31/05/11 17:14

c'è un problema, stampa solo la prima pagina.

Imposto da 1 a 32 , ad esempio, e mi stampa solo la pagina con gli articoli da 1 a 16
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: macro in excel

Postdi Avatar3 » 31/05/11 19:27

ehm...
Prova a cambiare questo codice in Or invece che And

Codice: Seleziona tutto
   If I Mod 16 = 0 Or I = Fine Then


Se ci sono ancora problemi
l'unica cosa che posso pensare è che la macro sia talmente veloce che non permette di stampare (anche se penso si debba accodare alla stampa)
prova ad inserire questa linea di codice dopo
Calculate
Codice: Seleziona tutto
Application.OnTime Now + TimeValue("00:00:03"),

Questo codice fa una pausa di 3 secondi e dopo procede alla stampa
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: macro in excel

Postdi apocrimata75 » 31/05/11 21:34

spettacolare, è bastato scambiare and con or.
Grazie di tutto, come ti è sembrato il mio file?
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: macro in excel

Postdi Avatar3 » 31/05/11 23:03

Buono! ;)

Se vuoi implementiamo il discorso del Range non multiplo di 16 (descritto in un post precedente)
nel quale si verificano situazioni non molto corrette
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "macro in excel":


Chi c’è in linea

Visitano il forum: Nessuno e 43 ospiti