Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Come fare per...

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


Sponsor
 

Come fare per Allegare un file di dati

Postdi Anthony47 » 03/02/15 12:29

Come fare per Allegare un file di dati

Ricordate che il vostro file non deve sostituire la descrizione di quanto richiesto, che deve essere completamente riportata nel testo del vostro messaggio.

Per allegare un file dovete utilizzare un servizio esterni di condivisione file.
Segnaliamo alcuni che ci sembrano raccomandabili:
http://www.filedropper.com
Utilizzabile anche senza registrazione; il piu' semplice da utilizzare
Trovate qui le Istruzioni per l' uso

http://www.wetransfer.com
Utilizzabile anche senza registrazione.

http://uploading.com/
Richiede registrazione per caricare

http://www.mediafire.com/
Richiede registrazione per caricare

https://www.dropbox.com/
Richiede registrazione per caricare

E' un elenco parzialissino dei server che offrono un buon servizio. I server che richiedono la registrazione in genere offrono validi servizi di archiviazione e sincronizzazione dei contenuti; verificare sul sito i temini d'uso e le prestazioni offerte.

Dopo aver caricato il vostro file copiate il "link per download" che vi viene segnalato dal sito; poi fate logout dal sito di condivisione file, se eravate loggati, e provate voi stessi a scaricare il file.
Controllate che:
  1. l' utente che voglia scaricare il file non debba accettare nessuna condizione o sottoscrivere termini di servizio, anche se sembrano termini accettabilissimi.
  2. il file sia scaricabile con quel link
  3. il file sia scaricabile immediatamente, senza che l' utente sia costretto ad attendere forzatamente 10-20-30-60 secondi.
  4. il pulsante "Scarica il file" sia immediatamente individuabile e non sia contornato da altri "Scaricami" di dubbia utilita'
Solo se tutti questi controlli sono positivi allora allegate il link nel corpo del vostro messaggio sul forum; se qualcosa non funziona allora riprovate l' operazione oppure cambiate server di condivisione.
Avatar utente
Anthony47
Moderatore
 
Post: 16625
Iscritto il: 21/03/06 16:03
Località: Ivrea

Come fare per Allegare una immagine

Postdi Anthony47 » 03/02/15 12:44

Ricordate che la vostra immagine non deve sostituire la descrizione di quanto richiesto, che deve essere completamente riportata nel testo del vostro messaggio.

1- Creare l' immagine
A) Creare una immagine del vostro schermo tramite il tasto STAMP di tastiera

A1)Per acquisire l'intera schermata
  1. Premere STAMP per copiare tutto lo schermo
  2. Aprire Paint.
  3. Scheda Pagina / gruppo Appunti, clic su Incolla.
  4. Eventualmente per ridimensionare l'immagine,: scheda Pagina iniziale /gruppo Immagine, clic su Ridimensiona.
  5. Eventualmente per visualizzare solo un ritaglio: selezionare l' area da salvare, scheda Pagina iniziale /gruppo Immagine, clic su Ritaglia
  6. Salvare infine l' immagine
A2) Per acquisire una finestra attiva
  1. Premere ALT+STAMP per copiare la finestra attiva
  2. procedere come detto prima
Note
Su alcune tastiere il tasto STAMP potrebbe essere contrassegnato da PrtScn, PRTSC, PRTSCN o un'abbreviazione simile.

Su alcuni computer portatili e altri dispositivi mobili privi del tasto STAMP potrebbe essere necessario utilizzare altre combinazioni di tasti, ad esempio FN+INS, per acquisire la schermata. Per istruzioni specifiche, consultare il manuale fornito con il computer portatile o il dispositivo.

B) oppure, Creare una immagine tramite "Strumento di cattura"

Alcuni sistemi operativi (es Windows 7) hanno una comando integrato di cattura immagini, con cui e' possibile catturare porzioni di schermo, aggiungere semplici annotazioni e salvare l' immagine.
In Win7:
  1. Premere Start, scrivere "cattura" nella casella di ricerca; alla voce Programmi dovrebbe comparire Strumento di cattura; avviatelo, e usatelo per creare le immagini (generali o di dettaglio) che vi servono per illustrare il vostro messaggio.
  2. Volendo, editate l' immagine con un programma di grafica come Paint per arricchirla di dettagli.

2-Pubblicare l' immagine su un server di condivisione
Potete usare uno dei server di condivisione file di cui abbiamo gia' parlato, oppure (soluzione raccomandata) utlizzare il servizio offerto dal sito www.postimage.org

Le istruzioni sull' uso di postimage.org sono disponibili QUI


3-Pubblicate il link dell' immagine
Inserite il link all' immagine all' interno del vostro messaggio nel forum
Avatar utente
Anthony47
Moderatore
 
Post: 16625
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Come fare per...

Postdi Anthony47 » 05/02/15 02:31

Istruzioni per l' uso del sito filedropper.com
Secondo la policy di questo provider (http://www.filedropper.com/aboutus.php) i file rimangono disponibili per 30 gg dopo l' ultimo download; trattandosi di un servizio gratuito questa regola potrebbe non essere sempre rispettata.

L' uso di questo sito per caricare /scaricare file e' semplicissimo


A) Per caricare una file da condividere
Accedere al sito http://www.filedropper.com
Viene visualizzata la pagina iniziale
Immagine
upload

Premere il pulsate 1 e scegliere il file da caricare. Il caricamento avviene immediatamente.

Viene visualizzato il link di accesso al file
Immagine
upload immagini
Cliccare sul link indicato (2), copiare il link e incollarlo nel corpo del messaggio che pubblicherete sul forum.

B) Per scaricare un file
Cliccando sul link inserito in un messaggio si dovrebbe aprire direttamente la pagina di filedropper.
Sono visualizzati vari messaggi pubblicitari e quindi, ben visibile verso il basso, il pulsante Download this file
Immagine
free image hosting

Premere il pulsante (3)

Viene visualizzata
Immagine
hosting immagini
Digitare nel box 5 la scritta che compare nel box 4 (non fa differenza tra maiuscolo /minuscolo), e premere il pulsante 6
A questo punto potete scegliere se Aprire direttamente o Salvare sul vostro disco il file; io in genere lo salvo e poi lo apro partendo dalla copia locale.

Grazie a tutti.
Avatar utente
Anthony47
Moderatore
 
Post: 16625
Iscritto il: 21/03/06 16:03
Località: Ivrea

Come fare per Registrare una macro in Excel

Postdi Anthony47 » 14/02/16 11:30

Una macro e' un set di istruzioni che agiscono sull' applicativo Excel per eseguire automaticamente una sequenza di operazioni.
Il linguaggio utilizzato e' il "Visual Basic for Application" (VBA), una variante del Microsoft Visual Basic.
Esse vengono memorizzate all'interno del file come "Progetto VBA". Da Excel si puo' accedere all'area macro tramite la combinazione Alt-F11, dove saranno visibili i progetti di tutti i file aperti all'interno di Excel.

Immagine
invia immagini

Con riferimento all'immagine, il Progetto Vba comprende:
-Moduli di classe appartenenti ai singoli Fogli di lavoro, in cui vanno inserite ad esempio le "macro di evento" a livello di Foglio (es Worksheet_Change, Worksheet_SelectionChange, etc)
-un Modulo di classe appartenente al File (QuestaCartellaDiLavoro, o ThisWorkbook), in cui vanno inserite ad esempio le macro di evento a livello di Workbook (es Workbook_Open, Workbook_BeforeSave, etc)
-eventuali UserForm e il loro modulo di classe (descrizione della userform e dei controlli usati, insieme delle macro di gestione degli eventi della userform e dei suoi controlli)
-uno o piu' Moduli Standard in cui vanno inserite le macro "normali" (semplificando: quelle che non vanno nei moduli di classe).


Il miglior modo per prendere confidenza con le macro e il linguaggio VBA e' Registrare una macro; in questo modo i comandi e le azioni che farete in Excel durante la registrazione saranno tradotti nei codici vba corrispondenti, dandovi qundi una macro che eseguira' automaticamente le stesse operazioni.
Non e' un codice ottimizzato, ma (salvo rare eccezioni) e' funzionante.
Anche gli utenti esperti otterrano in questo modo spunti utili a realizzare macro piu' articolate e complesse.


Per Word e PowerPoint le istruzioni sono analoghe, ma il registratore e' meno preciso di quello di Excel, mentre in Outlook le macro non possono essere registrate.


Registrare una macro con XL2003
a) Avviare la registrazione
-Menu /Strumenti /Macro /Registra nuova macro
-Dare un nome alla macro (2), inserire un eventuale "tasto di scelta rapida" (3; tasti da usare per avviare automaticamente la macro); scegliere se memorizzare la macro nel file corrente o nel file "Personal" (4); inserire una eventuale Descrizione; premere Ok
I numeri tra parentesi si riferiscono all' immagine pubblicata piu' avanti per l' ambiente 2007/2010

NOTA: per la spiegazione di cosa e' il file "Personal" vedi https://support.office.com/it-it/articl ... t-IT&ad=IT
Se al momento della registrazione non esiste nessun file "Personal", scegliendo al punto (4) "memorizza nel file Personal" il file verra' creato e reso attivo ma nascosto; alla chiusura di Excel verra' chiesto se si vuole salvare il file Personal.

b) Eseguire "diligentemente" i comandi di Excel che si vogliono memorizzare nella macro
Si suggerisce di provare la sequenza prima di procedere con la registrazione della macro.

c) Interrompere la registrazione
-Menu /Strumenti /Macro /Interrompi registrazione

d) Esaminare il codice prodotto ed eventualmente personalizzare la macro per variarne le prestazioni
Come per XL2007/2010



Registrare una macro con XL2007 / XL2010

1. Controllate che nel "ribbon" dei menu sia visibile il Tab "Sviluppo"; se assente:
a) XL2010
-Tab File /Opzioni /Personalizza barra multifunzione
-sotto Personalizza barra multifunzione, frame Schede principali, spuntare la voce Sviluppo
-Ok

b) XL2007
-premi il bottone MicrosoftOffice
-scegliere Opzioni di Excel (di Word, di PowerPoint)
-nel frame delle Categorie, click su Personalizzazione
-selezionare Mostra scheda Sviluppo
-Ok per chiudere la finestra di dialogo Opzioni.


2. Registrazione della macro
a) Avviare la registrazione
-Tab Sviluppo, gruppo Codice; premere Registra macro (1); dare un nome alla macro (2), inserire un eventuale "tasto di scelta rapida" (3; tasti da usare per avviare automaticamente la macro); scegliere se memorizzare la macro nel file corrente o nel file "Personal" (4); inserire una eventuale Descrizione; premere Ok

Come mostrato in figura:
Immagine
upload


b) Eseguire "diligentemente" i comandi di Excel che si vogliono memorizzare nella macro
Si suggerisce di provare la sequenza prima della registrazione.

c) Interrompere la registrazione
-Tab Sviluppo, gruppo Codice; premere Interrompi registrazione

d) Esaminare il codice prodotto ed eventualmente personalizzare la macro per variarne le prestazioni
-Premere Alt-F8
-nell' elenco, selezionare il nome della macro e premere Modifica
Si aprira' l' ambiente di sviluppo delle macro, nella pagina in cui la macro e' stata memorizzata, e sara' possibile applicare modifiche.
Avatar utente
Anthony47
Moderatore
 
Post: 16625
Iscritto il: 21/03/06 16:03
Località: Ivrea

Inserire correttamente una macro all'interno di un file

Postdi Anthony47 » 29/01/19 01:06

Inserire correttamente una macro all'interno di un file
Contenuto:
-concetti
-inserire una macro in un "Modulo Standard"
-inserire una macro in un "Modulo di Classe"

Il vostro file Excel, Word, PowerPoint o Access contiene in modo implicito un "Progetto Vba", in cui possono essere inserite le vostre macro.
Nota: le istruzioni che seguono sono riferite ad Excel, perche' il 90% dei problemi posti riguardano questa applicazione; ma i concetti sono espandibili alle altre Applicazioni Office.


Da Excel si puo' accedere all'area macro tramite la combinazione Alt-F11, che aprira' la finestra "Microsoft Visual Basic, Application Edition" (VBA); qui saranno visibili i "Progetti Vba" di tutti i file aperti all'interno di Excel.
Immaginecome caricare immagini su internet

Se, dopo aver aperto la finestra VBA, non vedete il riquadro Progetto - VbaProject (A) allora usate i comandi in Menu /Visualizza per visualizzarlo.

Con riferimento all'immagine, il Progetto Vba comprende:
1) Moduli di classe appartenenti ai singoli Fogli di lavoro, in cui vanno inserite ad esempio le "macro di evento" a livello di Foglio (es Worksheet_Change, Worksheet_SelectionChange, etc)

2) Uno o piu' Moduli Standard in cui vanno inserite le macro "normali" (semplificando: quelle che non vanno nei moduli di classe). E' normale suddividere le macro su piu' Moduli; per inserire un nuovo Modulo standard: Menu /Inserisci /Modulo
Potete cambiare nome al modulo modificandone le "proprietà Name" all'interno del riquadro "Proprietà" (B, se non e' visibile allora usate i comandi in Menu /Visualizza per visualizzarlo)

3) Un Modulo di classe appartenente al File (QuestaCartellaDiLavoro, o ThisWorkbook), in cui vanno inserite ad esempio le macro di evento a livello di Workbook (es Workbook_Open, Workbook_BeforeSave, etc)

4) Eventuali UserForm e il loro modulo di classe (descrizione della userform e dei controlli usati, insieme delle macro di gestione degli eventi della userform e dei suoi controlli)
Un Progetto potrebbe essere non visibile perche' "Compresso"; in questo caso cliccate sul simbolo + per espanderlo (vedi 5).


Per inserire una macro in un Modulo standard
a) Visualizzate la finestra Vba
Partendo da Excel, usare la combinazione di tasti Alt-F11
b) Selezionate ed espandete il Progetto del vostro file, in modo da visualizzare tutti i moduli presenti; per eventualmente inserire un nuovo Modulo standard: Menu /Inserisci /Modulo
c) Selezionate e fate doppioclick sul nome del modulo in cui volete inserire il codice; per evitare sorprese, controllate nell'intestazione della finestra che il modulo attivo sia quello desiderato
d) Copiate il codice che vi e' stato suggerito nel forum e Incollatelo nel riquadro C a destra (Area del Codice)
Usate Copia /Incolla, non riscrivete il codice.

Personalizzate e adattate come da istruzioni o secondo necessita'


Per inserire una macro in un Modulo di classe
Le istruzioni sono le stesse
a) Visualizzate la finestra Vba
b) Selezionate ed espandete il Progetto del vostro file
c) Selezionate e fate doppioclick sul nome del modulo in cui volete inserire il codice
d) Copiate il codice che vi e' stato suggerito nel forum e Incollatelo nel riquadro C a destra

Se il codice va inserito in un Modulo di classe di uno dei Fogli, allora e' possibile usare la seguente scorciatoia.
Partendo da Excel:
a) Tasto destro sul Tab col nome del Foglio a cui il codice va agganciato
b) Scegliete Visualizza codice
In questo modo si aprira' l'ambiente Vba direttamente sul modulo di classe in cui il codice va inserito
Avatar utente
Anthony47
Moderatore
 
Post: 16625
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Modificare il codice di una macro

Postdi Anthony47 » 29/01/19 01:15

Modificare il codice di una macro
Una macro descrive una sequenza di operazioni specifiche, descritte nel codice della stessa.

Non e' difficile modificare una macro per ottenere comportamenti diversi da quello originale.

Ovviamente il tutto presuppone che vengano rispettati le regole di programmazione del linguaggio VBA (conoscenza del linguaggio, delle istruzioni, della loro sintassi; degli "oggetti" su cui lavorare, i loro Metodi e Proprieta') e si possegga la capacita' di elaborare algoritmi e strutture dati idonee a raggiungere gli scopi.
Solo un po' di pratica vi dara' una conoscenza sufficiente, comunque rrovate la documentazione teorica e descrittiva qui:
Office client development
https://docs.microsoft.com/en-us/office ... evelopment

VBA programming in Office
https://docs.microsoft.com/it-it/office ... /overview/

Piccole ma significative modifiche possono pero' essere fatte abbastanza semplicemente.

Primo esempio
Partiamo ad esempio da una macro autoregistrata:
Codice: Seleziona tutto
Sub MioFormato1()
'
    Range("D4:D13").Select
    Selection.Font.Bold = True
    Selection.Font.Italic = True
    With Selection.Font
        .Color = 255
        .TintAndShade = 0
    End With
End Sub
Per le istruzioni e i primi suggerimenti su come registrare una macro:
viewtopic.php?f=26&t=103893&p=622593#p622593

Questa macro seleziona un'area del foglio corrente e applica a quelle celle il Grassett + Italico + Colore rosso al font.
Ma basta ad esempio eliminare l'istruzione Range("D4:D13").Select per trasformarla in una macro che applica automaticamente il suddetto formato all'area selezionata:
Codice: Seleziona tutto
Sub MioFormato1()
'
    Selection.Font.Bold = True
    Selection.Font.Italic = True
    With Selection.Font
        .Color = 255
        .TintAndShade = 0
    End With
End Sub

Possiamo applicare alla macro una sequenza di Scelta Rapida da tastiera e avere una macro che rapidamente applica la formattazione prescelta alle celle che di volta in volta selezioniamo.

Se invece che il Rosso vogliamo applicare il colore Blu, allora potremmo usare la funzione RGB per calcolare il codice colore e usarlo nel codice; esempio:
Codice: Seleziona tutto
Sub MioFormato1Blu()
'
    Selection.Font.Bold = True
    Selection.Font.Italic = True
    With Selection.Font
        .Color = RGB(0, 0, 255)
        .TintAndShade = 0
    End With
End Sub


Guardando il codice, non e' difficile concludere che il registratore non propone codice ottimizzato; infatti il codice puo' essere semplificato in
Codice: Seleziona tutto
Sub MioFormato11Blu()
'
    With Selection.Font
        .Bold = True
        .Italic = True
        .Color = RGB(0, 0, 255)
        .TintAndShade = 0
    End With
End Sub
Ma si tratta, in questo caso, di una semplificazione, non "ottimizzazione" del codice.
Comunque ricordate che spesso l'Ottimo e' il primo nemico del Bene, e davanti a una macro funzionante il mio primo commento e' sempre "bene così".

So che l'esempio e' molto banale, ma volevo farvi vedere come cominciare; poi tocca a voi sperimentare e apprendere.


Consideriamo una seconda macro autoregistrata:
Codice: Seleziona tutto
Sub MiaCopia()
'
    Sheets("Foglio1").Select
    Range("B2:B14").Select
    Selection.Copy
    Sheets("Foglio2").Select
    Range("A14").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("Foglio1").Select
    Range("D2:D14").Select
    Selection.Copy
    Sheets("Foglio2").Select
    Range("B14").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("Foglio1").Select
    Range("F2:F14").Select
    Selection.Copy
    Sheets("Foglio2").Select
    Range("C14").Value = 2 '.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Foglio1").Select
End Sub

Questa seleziona Foglio1, su cui seleziona e poi copia l'intervallo "B2:B14"; poi seleziona Foglio2, seleziona A14 e ci incolla (a partire da A14) i valori copiati. Torna su Foglio1 e ripete il processo Seleziona + Copia di un secondo intervallo; poi seleziona Foglio2 e ripete il processo di Seleziona + Incolla. Torna ancora su Foglio1 e ripete Seleziona + Copia su un terzo intervallo; poi seleziona Foglio2, Seleziona una cella e vi Incolla (a partire da questa cella) i Valori copiati.

Questo esempio ci consente notevoli modifiche al codice con notevoli ottimizzazioni.
Infatti Copy e' un Metodo che si applica a un intervallo (non necessariamente all'intervallo selezionato) e ne copia il valore su un altro intervallo o sul Blocco appunti di Office.
Ne consegue che la prima parte (il Copia /Incolla dei primi due intervalli) puo' essere riscritta in
Codice: Seleziona tutto
    Sheets("Foglio1").Select
    Range("B2:B14").Copy Destination:=Sheets("Foglio2").Range("A14")
    Range("D2:D14").Copy Destination:=Sheets("Foglio2").Range("B14")

Mentre il Copia /Incolla-speciale del terzo intervallo puo' essere riscritto in
Codice: Seleziona tutto
    Range("F2:F14").Copy
    Sheets("Foglio2").Range("C14").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

La macro quindi diventa
Codice: Seleziona tutto
Sub MiaCopiaMia()
'
    Sheets("Foglio1").Select
    Range("B2:B14").Copy Destination:=Sheets("Foglio2").Range("A14")
    Range("D2:D14").Copy Destination:=Sheets("Foglio2").Range("B14")
    Range("F2:F14").Copy
    Sheets("Foglio2").Range("C14").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub


In questo caso non si tratta di sola semplificazione, ma anche di "ottimizzazione", in quanto lo spostamento tra i fogli e la selezione di intervalli e' in vba un'operazione molto lenta; l'indirizzamento diretto e' invece molto piu' rapida e quindi una macro si esegue in tempo molto minore.

Come ulteriore semplificazione, si tenga presente che la copia puo' avvenire anche su un foglio che non sia selezionato, basta "indirizzarlo". Es
Codice: Seleziona tutto
    Sheets("Foglio1").Range("B2:B14").Copy Destination:=Sheets("Foglio2").Range("A14")


Buon lavoro...
Avatar utente
Anthony47
Moderatore
 
Post: 16625
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Debuggare una macro

Postdi Anthony47 » 29/01/19 01:30

Come debuggare una macro
Raramente una macro funziona esattamente come voluto al primo colpo; nei casi "piu' fortunati" viene emesso un runtime error che concede la possibilita' di entrare in Debug del codice, in altri casi la macro semplicemente si completa con risultati non attesi. La fase di debug e' pertanto fondamentale prima di dare per completato il lavoro.

Il debug comprende una serie di opzioni disponibili all'interno della finestra Vba, qui ne illustrero' i piu' semplici da utilizzare: esecuzione istruzione singola, breakpoint, controllo contenuto di singole variabili, finestra "Variabili locali", finestra Immediata, istruzione Stop, Istruzione Debug

Vengono presentati gli strumenti e il loro funzionamento: come utilizzarli per risolvere i casi che vi troverete ad affrontare deve invece far parte della vostra competenza e intuizione.

Per dimostrare l'uso di queste opzioni lavoriamo sulla seguente macro, puramente dimostrativa:
Codice: Seleziona tutto
Sub DemoSub()
Dim I As Long, J As Long, cValue As Variant
'
With Range("A2:C10")
    For I = 1 To .Rows.Count
        For J = 1 To .Columns.Count
            .Cells(I, J).Select
            cValue = .Cells(I, J).Value
            Debug.Print cValue
            If cValue = 33 Then
                .Cells(I, J).Interior.Color = RGB(255, 0, 0)
            Else
                .Cells(I, J).Interior.Color = RGB(255, 255, 0)
            End If
        Next J
    Next I
End With
End Sub

La macro scorre le celle dell'area A2:C10 del foglio corrente, le seleziona, e colora in Rosso il fondo delle celle che contengono il valore numerico 33 e in Giallo le altre.


A) Esecuzione istruzione singola
Selezionamo col cursore del mouse un'area all'interno del codice della macro, e premiamo il tasto F8.
La riga Sub demoSub viene evidenziata di giallo ed e' ora pronta per l'esecuzione.
A un nuovo F8 la macro si avvia e viene evidenziata la riga With Range("A2:C10"), che e' pronta per essere eseguita

Continuando, a ogni F8 viene eseguita una istruzione.
In questo modo sara' possibile eseguire le istruzioni sulla finestra vba (in modalita' "non massimizzata", per sbirciare sul sottostante foglio Excel), e si potra' controllare quali celle vengono selezionate sul foglio e determinare il corretto (o non corretto) evolvere del codice.
Quando abbiamo esaurito il lavoro da fare passo passo, allora possiamo premere F5 e la macro verra' eseguita con continuita' fino alla fine, o fino a situazioni che ne provocano l'interruzione.


B) Breakpoint
Potremmo voler fermare la macro nel momento in cui la cella viene colorata di Rosso; ci potremmo arrivare anche con taaanti F8 consecutivi, oppure impostando un "break" sulla riga di codice

Immagine

Per impostare il break, puntare nel vostro vba il mouse nella posizione in cui nell'immagine e' presente il Cerchio marrone e cliccare: il cerchio e la riga in marrone indicano la presenza di un break nel vostro codice.
Se ora premiamo F5 per eseguire la macro in modalita' "Continua" (non Istruzione singola) allora tutte le istruzioni si eseguiranno fino a che non si verifica la condizione cValue = 33 e quindi si arriva all'istruzione su cui e' impostato il break

Per eliminare il break cliccare sul cerchio marrone corrispondente al break


C) Controllo del contenuto di singole variabili
Nella situazione in cui siamo arrivati (vedi Breakpoint) ci interessa verificare quale e' il contenuto della variabile cValue.
Se posizioniamo il cursore sulla parola cValue all'interno del codice (senza cliccare) allora comparira' un popup che indica il valore corrente della variabile:

Immagine

Analogamente se "puntiamo" su I oppure su J potremo vedere le coordinate della cella di cui stiamo a parlare


D) Finestra "Variabili locali"
Le informazioni che possiamo "richiedere" col posizionamento del mouse possiamo anche averle, presentate tutte insieme, nella finestra "Variabili locali", che possiamo attivare tramite Menu /Visualizza /Finestra Variabili locale:

Immagine



E) Finestra Immediata
Nel codice avrete notato la presenza di una istruzione Debug.Print cValue; questa istruzione provvede a segnalare il valore della variabile cValue, e questa segnalazione sara' visibile all'interno della finestra Immediata del vba, che puo' essere attivata sia da Menu /Visualizza che con la combinazione Contr-g

Troverete quindi nella finestra immediata tutti i valori che la variabile cValue assume nell'esecuzione della macro.
Tenete presente pero' che la finestra contiene max 200 valori; nuove registrazioni fanno scomparire le registrazioni piu' vecchie.

Nella finestra Immediata possono anche essere eseguite operazioni e visualizzate informazioni; es
Codice: Seleziona tutto
?Application.WorksheetFunction.CountIf(Range("A1:A100"), ">30")
Verranno calcolate quante celle nel range("A1:A100") hanno valore superiore a 30 e il risultato sara' visualizzato nella finestra

Codice: Seleziona tutto
?cvalue
Visualizzera' il valore che la variabile cValue assume al momento.

Codice: Seleziona tutto
Cvalue=22
Forzera' la variabile cValue ad assumere il valore 22

F) Istruzione Stop
Una eventuare istruzione "Stop" all'interno del codice funziona come un Breakpoint, cioe' arresta su quella istruzione l'esecuzione della macro. Es
Codice: Seleziona tutto
            If cValue = 33 Then
                Stop
                .Cells(I, J).Interior.Color = RGB(255, 0, 0)
            Else
Tuttavia il breakpoint viene eliminato quando il progetto (cioe' il file) viene chiuso, mentre lo Stop rimane nel codice


G) Istruzione Debug
Debug dispone di due metodi: Print e Assert

Abbiamo gia' visto che l'istruzione Debug.Print invia su finestra Immediata dei valori che possono essere poi esaminati
Altro esempio:
Codice: Seleziona tutto
            If cValue = 33 Then
                Debug.Print "Rosso:", .Cells(I, J).Address, cValue
                .Cells(I, J).Interior.Color = RGB(255, 0, 0)
            Else
                Debug.Print "Giallo:", .Cells(I, J).Address, cValue
                .Cells(I, J).Interior.Color = RGB(255, 255, 0)
            End If
In questo modo, al completamento della macro ci troveremo nella finestra Immediata l'indirizzo delle celle esaminate, lo stato finale Rosso o Giallo e il contenuto della cella
Codice: Seleziona tutto
...
Giallo:       $C$5           15780
Giallo:       $A$6           43490,4927777778
Rosso:        $B$6           33
Giallo:       $C$6           15720
Giallo:       $A$7           43490,4935532407
...

Usate Debug.Print ...solo per debug, o comunque con parsimonia, in quanto la sua esecuzione rallenta in modo apprezzabile la velocita' di esecuzione del codice.

Debug.Assert valuta invece una espressione e interrompe il codice qualore il risultato e' "Falso"; es
Codice: Seleziona tutto
Debug.Assert Application.WorksheetFunction.CountIf(Range("A1:A100"), ">30") < 50

Questa causera' la sospensione dell'esecuzione del codice appena nell'intervallo A1:A100 saranno presenti almeno 50 valori superiori a 30
Debug.Assert e' assimilabile a un breakpoint inserito da programma, quindi permanente: istruzioni di questo tipo vanno insomma eliminate da una macro in versione finale per evitare che durante l'esecuzione il codice vada in break senza messaggi.


Questi gli strumenti... Ora basta imparare a usarli a proprio vantaggio...
Avatar utente
Anthony47
Moderatore
 
Post: 16625
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Per eseguire una macro

Postdi Anthony47 » 29/01/19 01:37

Per eseguire una macro

La modalita' basica per avviare una macro e' tramite il comando Visualizza macro + Esegui:
-da Excel, la combinazione Alt-F8 visualizza l'elenco delle macro disponibili; selezionare la macro desiderata, premere il pulsante Esegui

Oppure puo' essere assegnata alla macro una combinazione di tasti (Scelta Rapida da tastiera):
-premere Alt-F8 per visualizzare l'elenco delle macro disponibili; selezionare la macro desiderata, premere il pulsante Opzioni; si apre la finestra Opzioni macro; nel box "Tasto di scelta rapida" inserire una lettera (a-z), minuscola o maiuscola; confermare con Ok; chiudere la finestra Elenco macro con Annulla.
In questo modo la macro si avviera' premendo la combinazione Alt-LetteraAssegnata

Per vedere le combinazioni di Scelta Rapida gia' usate in Excel (che quindi non sarebbero piu' disponibili, se assegnate successivamente):
https://support.office.com/it-it/articl ... 7213f0040f

Oppure si puo' inserire un "Pulsante" sul foglio di lavoro, prelevandolo (nella versione piu' semplice) dai Controlli Modulo (Menu /Sviluppo; gruppo Controlli, icona Inserisci); nella fase di creazione del pulsante verra' chiesto a quale macro lo si vuole abbinare.
In questo modo bastera' premere il Pulsante per avviare la macro collegata.

Oppure si puo' personalizzare la Barra di Accesso rapido per inserire una icona assegnata a una macro (XL2007 e superiori)
Avatar utente
Anthony47
Moderatore
 
Post: 16625
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Personalizzare la Barra di Accesso Rapido (BAR)

Postdi Anthony47 » 29/01/19 01:45

Personalizzare la Barra di Accesso Rapido (BAR)
Da XL2007 l'interfaccia Excel e' caratterizzata dalla presenza della Barra Multifunzione (Ribbon) e della Barra di Accesso Rapido (BAR)

Immagine

La posizione della BAR puo' cambiare anche in funzione di personalizzazioni utente; idem il contenuto del Ribbon)

La Barra di Accesso Rapido (BAR) offre la possibilita' di contenere comandi sempre a portata di mano e il suo contenuto puo' essere personalizzato dall'utente, sia per quanto riguarda i comandi nativi dell'applicazione (quindi accessibili attraverso i vari menu) che per comandi realizzati tramite macro.

Qui viene mostrato come aggiungere sulla BAR comandi per il lancio di Macro

Per avviare la personalizzazione della BAR
a) Premere l'icona circolettata in Rosso e scegliere "Altri comandi..."; oppure tasto dx sul "Ribbon"; scegliere "Personalizza barra di accesso rapido...";
b) Si aprira' la finestra Opzioni di Excel alla voce "Barra di accesso rapido"

Immaginephoto host

Poi, con riferimento all'immagine:
-In A, selezionare Scegli comandi da /Macro
-in B, selezionare la macro che si intende posizionare sulla Barra di accesso rapido
-in C, selezionare se quella macro la si vuole assegnare all'intera applicazione Excel (indipendentemente dal file in gestione) o a uno specifico file.
-in D, premere Aggiungi
In questo modo la macro selezionata verra' aggiunta al riquadro di destra, che contiene la composizione della Barra di accesso rapido, con una icona di default.


Se volete cambiare l'icona:

Immagine

Premete il tasto Modifica - F; si aprira' la finestra Modifica pulsante G, dove potete selezionare una icona a piacere; potete anche modificare il "Suggerimento" che sara' visualizzato nella QAB, scrivendolo nella casella "Nome visualizzato"

Infine completate la personalizzazione con il pulsante OK - H

Volendo su puo' anche "Salvare" la configurazione della BAR + Ribbon tramite il pulsante I- Importa /Esporta, scegliendo "Esporta tutte le personalizzazioni"; in questo modo si creera' un file "NomeDelFile.exportedUI" che descrive la configurazione della BAR e del Ribbon usando il linguaggio xml.

Puo' essere "Importato" su altro Pc per impostargli quella specifica configurazione BAR+Ribbon.

Puo' essere aperto e modificato con Notepad per modificare le personalizzazioni.


La macro aggiunta sara' ora disponibile nella Barra di accesso rapido con l'icona prescelta
Immagine

Nota finale
La personalizzazione della BAR o del Ribbon puo' anche avvenire tramite un file xml.
Il modo piu' semplice di utilizzare questa prestazione e' di salvare (come gia' descritto prima) la configurazione della BAR e del Ribbon in un file "NomeDelFile.exportedUI".
Questo stesso file puo' essere "Importato" in altri Pc per impostargli quella specifica configurazione BAR+Ribbon.
Il file inoltre puo' essere aperto e modificato con Notepad per modificare le personalizzazioni.

Una discussione in cui ne parliamo: viewtopic.php?f=26&t=109966
(e' riferita a Word, ma i concetti sono gli stessi)


Documentazione di riferimento:
Personalizzare la barra multifunzione in Office:
https://support.office.com/it-it/articl ... 1a460ecb31

Personalizzare la barra di accesso rapido:
https://support.office.com/it-it/articl ... b6b0739e52

Customize the Office Fluent ribbon by using an Open XML formats file
https://docs.microsoft.com/it-it/office ... rmats-file

Buon prova e riprova...
Avatar utente
Anthony47
Moderatore
 
Post: 16625
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Come fare per...":


Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti