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

macro in excel

Postdi lory08vinc61 » 10/03/08 02:52

Ciao
Non sò proprio creare una macro, puoi dirmi passo passo come fare?
Grazie
lory08vinc61
Newbie
 
Post: 3
Iscritto il: 10/03/08 01:43

Sponsor
 

Re: macro in excel

Postdi Anthony47 » 10/03/08 21:22

Ciao lory08vinc61 e benvenuto nel forum.

La risposta “tecnica” alla tua domanda e’ la seguente:
-da excel, premi Alt-F11 per aprire l’ editor del “Visual Basic per Applicazioni” (o VBA; il linguaggio di programmazione delle macro)
-nel frame di sx, VbaProject, selezioni il nome del tuo file di lavoro, poi Menu /Inserisci /Modulo
-ti viene inserito un “Modulo1”, vuoto
-nel frame di dx scrivi “Sub Macromia()” (senza virgolette; e’ il nome della macro)
-ti viene aggiunto End Sub
-ora dopo la riga del nome e prima di End Sub puoi scrivere le istruzioni Vba che eseguono il tuo algoritmo.

E’ probabile che a questo punto ti sentirai disorientato, che e’ proprio quello che volevo ottenere io...
Volevo infatti sottolineare come il problema, col Vba come per qualsiasi altro linguaggio, non stia nel riuscire a imparare il modo di scrivere le istruzioni, ma (soprattutto) nell’ imparare quali sono le istruzioni, le funzioni e quant’ altro il linguaggio mette a disposizione dell’ Utente e successivamente imparare a combinarle per ottenere il risultato che si cerca. Cose che si ottengono con un po’ di studio e tanta applicazione.

Cio’ detto, vediamo un metodo semplificato per ottenere la tua prima macro:
-lascia aperto l’ editor del Vba ma torna su excel
-Menu /Strumenti /Macro /Registra nuova macro (in questo modo avvii la registrazione di una macro)
-lascia il nome che ti propone (probabilmente Macro1), e nel box Testo di scelta rapida inserisci “R” (Maiuscolo, R come Rosso); premi Ok
-seleziona la cella F5 e applica alla cella il colore Rosso
- Menu /Strumenti /Macro /Interrompi registrazione (per fermare)
-torna sull’ editor del Vba; e’ possibile che oltre a Modulo1 che avevi (forse) creato prima c’ e’ un Modulo2
-doppioclick sui “Moduli” che ti vengono visualizzati, fino a trovare la tua Macro1 (o come e’ stata chiamata)
-seleziona la riga “Range("F5").Select” e cancellala
-torna su excel, seleziona qualsiasi cella o gruppo di celle e premi Contr-Maiusc-r e vedi l’ effetto che fa la tua prima macro.

Torna sul Vba editor, clicca su “Interior” (1 click): si apre l’ help On-line che ti mostra la descrizione dell’ Oggetto Interior e le sue “Proprietà”, insieme con interessanti esempi.
Prova a sostituire ".ColorIndex = 3" con ".ColorIndex = 4" e vedi l' effetto.

Non e’ molto, ma hai cominciato

Prova a registrare altre macro, e vedi quale codice corrisponde a quelle azioni; ovviamente non e' l' unico modo ne' il modo piu' sofisticato per eseguire "quelle" operazioni, ma sappi che ancora oggi il 50% del mio codice deriva dalla registrazione di una macro.

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

macro in excel

Postdi Flash30005 » 13/03/08 23:23

Ciaooooooooo Anthony
ci si "rivede" è?
e "vedo" che ti dai sempre molto da fare.....
ho un piccolo problema con una macro che funziona egregiamente (o quasi) e vengo al dunque:
ho due fogli di excel (F1 e F2), su F1 ho il pulsante di una macro che trasferisce i dati di una tabella, presente su una pagina Web, sul F2 e il codice iniziale della macro è questo:
Codice: Seleziona tutto
     Sheets("F2").Select
    Range("A1").Select
    Cells.Select
    Selection.Clear
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.abcdefghailmnopqrstuvz.com/1234567890.html etc

il problema è che, nell'attimo (come da macro) c'è la Select del foglio F2, l'utente vede appunto il foglio F2 (mentre stava visualizzando il foglio F1, poi chiaramente a fine macro ho messo la select di F1 e tutto torna normale.

Vorrei sapere da te se è possibile non far apparire quella transizione con relativa visualizzazione del foglio F2, ma poter effettuare il caricamento dati rimanendo sempre in visualizzazione di F1.

Ho provato a nascondere, sempre con la macro il foglio F2 ma a quel punto il programma si blocca (logicamente) perché non trova il foglio.

Come posso ovviare al "piccolo" inconveniente?

grazie
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro in excel

Postdi Anthony47 » 13/03/08 23:52

Bentornato.
Se ti da fastidio il cambio di visualizzazione, metti
Codice: Seleziona tutto
Application.ScreenUpdating = False
prima di Sheets("F2").select

Ma credo che l' operativita' rimarra' bloccata per tutta l' esecuzione della connessione al sito ed esecuzione della query.
Ma questa macro come viene avviata e con quale scopo?

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

Re: macro in excel

Postdi Flash30005 » 15/03/08 22:09

Come al solito....
il tuo codice è perfetto!
Codice: Seleziona tutto
Application.ScreenUpdating = False

l'ho inserito come hai spiegato e funziona egregiamente.

Lo scopo della queri è quella di importare la tabella-web sul foglio F1 mentre nel foglio F2 c'è solo la prima riga di F1 che corrisponde alla data (di F2 nella cella E26)
mi spiego meglio:
la colonna della tabella (importata con la query in F1) è così composta
A2-Ax (Data) B2-Bx C2-Cx D2-Dx E2-Ex Etc
15/03/2008 Dato1 Dato2 Dato3 Datox Datoetc

Codice: Seleziona tutto
B25 (di F2)=CERCA.VERT(E26;F1!A2:H100;2;FALSO)
C25 (di F2)=CERCA.VERT(E26;F1!A2:H100;3;FALSO)
D25 (di F2)=CERCA.VERT(E26;F1!A2:H100;4;FALSO)
Etc......Etc..........Etc...................................

In F2 ho anche un pulsante (Freccia Rew) che comanda la macro così impostata:
Codice: Seleziona tutto
 
ActiveSheet.Cells(Selection.Row, 1).Select
 Selection.Offset(1, 0).Select
 Selection.Copy
 Sheets("Verifica").Select
 Range("F26").Select
 ActiveSheet.Paste
 Range("H25").Select

Ho anche la Freccia Fwd che fa l'azione inversa fino ad arrvare alla massima data (esistente in A1 di F1) con questo codice di avviso:
Codice: Seleziona tutto
Sheets("F1").Select
If Selection.Row = 2 Then
Sheets("Verifica").Select
MsgBox "ULTIMO AGGIORNAMENTO DISPONIBILE", vbInformation, "Attenzione"
End If
ActiveSheet.Cells(Selection.Row, 1).Select
Selection.Offset(-1, 0).Select
Selection.Copy
Sheets("Verifica").Select
Range("F26").Select
ActiveSheet.Paste
Range("H25").Select

Una volta che la tabella-query è importata, basta premere sulle frecce poste in F2 (indietro e poi avanti) per avere la riga da B25 a X25 i dati della tabella in F1.
Spero di essere stato chiaro (almeno quanto te)
Poi se ti interessa sapere l'effettivo utilizzo fammelo sapere... ;)

ciao e grazie ancora
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro in excel

Postdi Anthony47 » 16/03/08 00:35

Il fatto che desse fastidio lo switch su F2 mi aveva fatto pensare che la macro partisse in automatico; in questo caso si poteva pensare a un automatismo meno invasivo.
Visto che parte con pulsante, direi che va bene cosi'.

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

Re: macro in excel

Postdi Flash30005 » 17/03/08 01:18

I due pulsanti Rew e Fwd li utilizzo dopo aver effettuato l'aggiornamento della tabella-query su F1.
In effetti non erano questi due pulsanti a crearmi l'inconveniente del passaggio (momentaneo) da F2 a F1 ma era appunto il pulsante di aggiornamento (quello indicato nel mio primo post) che il codice da te consigliato ha risolto.

Spero comunque che i codici inviati possano essere utili indipendentemente dal mio utilizzo (è per questo che ho evitato di indicarlo) per tutti coloro che vogliano applicarlo in situazioni simili: dove esista una tabella con dei dati riportati in riga e si voglia verificare e/o riportare (in questo caso per data, ma può essere qualsiasi altro valore) i dati in un altro foglio (alla sola pressione di un pulsante del foglio stesso) per ogni tipo di utilizzo.
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "macro in excel":


Chi c’è in linea

Visitano il forum: Anthony47 e 88 ospiti