Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

EXCEL macro per un novellino

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

EXCEL macro per un novellino

Postdi Gammamax » 23/11/09 16:39

salve a tutti, mi sono appena iscritto e quindi portate pazienza se le mie questioni possono sembrare banali.
Ringrazio anticipatamente chi mi può aiutare.
avrei due quesiti uno generale ed uno specifico sulle macro
Il primo è volendo approfondire il linguaggio delle macro ed i codici utilizzati esiste un manuale leggibile ?

Il secondo è questo,
Devo copiare i dati da una selezione di tre celle contigue sulla riga del foglio 1 alla prima riga vuota del foglio 2 in modo che diventi un elenco progressivo.
Ho compilato una macro per la copia, ma non riesco a capire come fare individuare la prima riga vuota; per adesso ho imposto io il range con la seguente macro:

Sheets("Foglio1").Select
Range("C15:E15").Select
Selection.Copy
Sheets("Foglio2").Select
Range("B8:D8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Font.Bold = True
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With


Grazie per un aiuto
Gammamax
Newbie
 
Post: 8
Iscritto il: 23/11/09 15:59

Sponsor
 

Re: EXCEL macro per un novellino

Postdi luca2002for » 23/11/09 17:59

Caro Gammamax, se ho capito bene le tue esigenze la macro dovrebbe essere più o meno così:

Codice: Seleziona tutto
Sub Max()

    Sheets("Foglio2").Select
    With ActiveWorkbook.Sheets("Foglio2")
    If .Range("A1").Value = "" Then
    Set Wrange = .Range("A1")
    ElseIf .Range("A2").Value = "" Then
    Set Wrange = .Range("A2")
    Else
    Set Wrange = .Range("A1").End(xlDown).Offset(1, 0)
    End If
    End With
    Sheets("Foglio1").Select
    Range("C15:E15").Select
    Selection.Copy
    Sheets("Foglio2").Select
    Wrange.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
End Sub


Per correzioni (che verosimilmente dovranno essere apportate, essendo novellino appena un pochino meno di te) e per consigli su un libro per approcciare con metodo il VBA (e la risposta la leggerò con interesse anch'io), ti rimando alle risposte dei veri esperti.

A dopo

Luca
luca2002for
Utente Senior
 
Post: 116
Iscritto il: 07/05/06 09:32

Re: EXCEL macro per un novellino

Postdi Anthony47 » 23/11/09 21:26

Ciao Gammamax e benvenuto nel forum, ciao luca.

Io partirei dalla macro di Gammamax, aggiungendogli solo le istruzioni per "accodare" le tre celle da Foglio1 a Foglio2, per cui la macro potrebbe diventare
Codice: Seleziona tutto
Sheets("Foglio1").Select
Range("C15:E15").Select
Selection.Copy
Sheets("Foglio2").Select
'Range("B8:D8").Select            '<< SOSTITUITA dalla successiva riga
Cells(Rows.count,2).End(Xlup).offset(1,0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Font.Bold = True
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With

Ci sono ottimizzazioni possibili, tra cui l' eliminazione dei ".select", ma sono finezze che rendono meno facile al principiante seguire la macro nell' eventuale debug, per cui qui non le propongo.

Per quanto riguarda un manuale vba, io non ho niente da consigliare; in genere me la cavo dicendo che l' offerta e' abbastanza varia, ogni libro contiene qualcosa di utile, ma nessuno e' utile al 100%

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL macro per un novellino

Postdi Gammamax » 24/11/09 08:49

Innanzi tutto, un ringraziamento a chi mi ha risposto perchè mi permette di progredire un po'.
Le due soluzioni proposte le proverò entrambe perchè così posso capire la differenza e capire la terminologia delle macro e il loro effetto.
Per le "finezze" sono il primo a dire che è sicuramente 'na fetecchia, ma è la mia prima macro fatta con il registratore di macro che è ceratmente un aiuto, ma non uno strumento raffinato.
Vorrei anche dire che non sono un grande amante di Excel perchè è un ottimo foglio di calcolo se uno deve eseguirne, ma molte funzioni di stokkaggio dei dati e il loro ordinamento sono tipiche di un DB quale access..

P.S. non posso contraccambiare consigli d'informatica, ma se avete necessità per il settore scienza alimenti & co lo farò volentieri.
grazie max
Gammamax
Newbie
 
Post: 8
Iscritto il: 23/11/09 15:59

Re: EXCEL macro per un novellino

Postdi ricky53 » 25/11/09 01:47

Ciao,

se proseguirai con le macro mi permetto di consigliarti di evitare il più possibile le istruzioni ".select" per esempio perchè rallentano l'esecuzione

prova in questo modo

Codice: Seleziona tutto
Sub Copia_Celle()
    Application.ScreenUpdating = False
    Sheets("Foglio1").Range("C15:E15").Copy
    RR = Sheets("Foglio2").Range("B" & Rows.Count).End(xlUp).Row + 1
    Sheets("Foglio2").Range("B" & RR).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   
    Sheets("Foglio2").Select
    Range("B" & RR & ":D" & RR).Select
    Selection.Font.Bold = True
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Application.ScreenUpdating = True
End Sub


Si può ancora ottimizzare ma è meglio un passo per volta.
Buon proseguimento.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCEL macro per un novellino

Postdi Anthony47 » 25/11/09 18:13

Ricky, visto il titolo "Macro per un novellino" avevo volutamente concluso " Ci sono ottimizzazioni possibili, tra cui l' eliminazione dei ".select", ma sono finezze che rendono meno facile al principiante seguire la macro nell' eventuale debug, per cui qui non le propongo."
Il bello dei ".select" e' che si vede che cosa quella istruzione fa, e se seleziona la cella sbagliata in fase di debug te ne accorgi subito. Il lato negativo e' che selezionare richiede tempo di cpu; ma parliamo di millisecondi, e un principiante se lo puo' permettere.
Perche' in questi casi l' obiettivo e' creare macro efficaci, non (non ancora) macro performanti.

Comunque grazie per i contributi che dai.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL macro per un novellino

Postdi ricky53 » 25/11/09 22:12

Ciao,
grazie a te per quanto scrivi nei tuoi interventi e che più volte ho utilizzato ed utilizzerò.

Nel mio intervento volevo spronarlo a proseguire con le macro ed avevo scritto:
se proseguirai con le macro mi permetto di consigliarti di ...


E poi la mia vena didattica posso lasciarla andare ogni tanto vero ?

A ritrovarci.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCEL macro per un novellino

Postdi Gammamax » 26/11/09 15:39

Tutto molto interessante, anzi è un vero sprone a proseguire.
Credo che mi manchino un po' le basi ed è per questo che mi sono iscritto al forum dove anche se a pezzi si impara pareccchio anche solo leggendo.
Apprezzo molto l'aiuto e l'eliminare comandi è vero possono essere finezze, ma spesso guardando le finezze si capisce anche il grosso.
Consigliatemi un testo o almeno l'elenco dei comandi, posso sempre partire da li.
Gammamax
Newbie
 
Post: 8
Iscritto il: 23/11/09 15:59

Re: EXCEL macro per un novellino

Postdi Anthony47 » 26/11/09 22:23

Io uso help on line del vba, una vera miniera; talvolata vado sulla libreria msdn (http://msdn.microsoft.com/en-us/library/bb726434.aspx).
Poi per imparare niente di meglio che copiare e capire; ad esempio copia una macro da queste pagine, guarda come le istruzioni sono concepite, mandala in esecuzione passo passo, approfondisci il funzionamento esaminando l' impatto sul foglio di lavoro e sul flusso del programma. Una volta capito il meccanismo prova ad applicare modifiche e verificane l' impatto.
Ottimo anche registrare una macro, esaminarne il codice, applicare modifiche per aumentarne la complessita'.
Qui trovi delle linee guida su come "debuggare" una macro: viewtopic.php?f=26&t=65537

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL macro per un novellino

Postdi Gammamax » 14/12/09 08:25

E' quello che ho fatto e faccio t'uttora.
Ho imparato il Basic ( che poi non serve più !!) nel lontano 198? ricopiando listati di programmi cercando di capire cosa facevano e in particolare ricercando gli errori fatti; così sto facendo con Excel .
Prova e riprova.
Il problema è che ciò che fai è sempre migliorabile, quindi si studia di nuovo e mai ci si ferma.
Gammamax
Newbie
 
Post: 8
Iscritto il: 23/11/09 15:59


Torna a Applicazioni Office Windows


Topic correlati a "EXCEL macro per un novellino":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti