Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    35

    Utilizzo codice VBA su Excel

    Salve a tutti utilizzo Office 2007 e vorrei sapere come utlizzare il seguente codice:

    codice:
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Text = "" Then
    Exit Sub
    End If If
    Target.Value > 1 Then
    Exit Sub
    End If
    If Target.Style = "Percent" Then
    Dim forma As Shape
    For Each forma In Target.Worksheet.Shapes
    If forma.Name = Target.Address Then
    forma.Delete
    Exit For
    End If
    Next Set forma = Target.Worksheet.Shapes.AddShape(msoShapeRectangle, Target.Left, Target.Top, Target.Width * Target.Value, Target.Height)
    forma.Name = Target.Address
    With forma
    .Line.Visible = False
    .Fill.Transparency = 0.5
    .Fill.ForeColor.RGB = RGB((Int(255 * Target.Value)), 255 - (Int(255 * Target.Value)), 0)
    End With
    End If
    End Sub
    Che so essere utilizzato per visualizzare un Riempimento Percentuale delle Celle.
    Sono totalmente estraneo alla procedura di inserimento in un foglio excel e alla relativa attivazione.
    Potreste aiutarmi illustrandomi passo passo come fare?

    Insieme alla spiegazione si accettano file gia pronti all'uso qualora la sola spiegazione sia troppo difficile

  2. #2
    Utente bannato
    Registrato dal
    Sep 2010
    Messaggi
    3

    Re: Utilizzo codice VBA su Excel

    Originariamente inviato da Fijix
    Salve a tutti utilizzo Office 2007 e vorrei sapere come utlizzare il seguente codice:

    codice:
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Text = "" Then
    Exit Sub
    End If If
    Target.Value > 1 Then
    Exit Sub
    End If
    If Target.Style = "Percent" Then
    Dim forma As Shape
    For Each forma In Target.Worksheet.Shapes
    If forma.Name = Target.Address Then
    forma.Delete
    Exit For
    End If
    Next Set forma = Target.Worksheet.Shapes.AddShape(msoShapeRectangle, Target.Left, Target.Top, Target. [url=NO SPAM![/url] Width * Target.Value, Target.Height)
    forma.Name = Target.Address
    With forma
    .Line.Visible = False
    .Fill.Transparency = 0.5
    .Fill.ForeColor.RGB = RGB((Int(255 * Target.Value)), 255 - (Int(255 * Target.Value)), 0)
    End With
    End If
    End Sub
    Che so essere utilizzato per visualizzare un Riempimento Percentuale delle Celle.
    Sono totalmente estraneo alla procedura di inserimento in un foglio excel e alla relativa attivazione.
    Potreste aiutarmi illustrandomi passo passo come fare?

    Insieme alla spiegazione si accettano file gia pronti all'uso qualora la sola spiegazione sia troppo difficile
    Ci dispiace, questo è troppo complicato per me

  3. #3
    Moderatore di Windows e software L'avatar di darkkik
    Registrato dal
    Dec 2003
    residenza
    Pavia - Milano - Lodi.
    Messaggi
    11,481

    Re: Re: Utilizzo codice VBA su Excel

    Originariamente inviato da lovecats
    Ci dispiace, questo è troppo complicato per me
    Evita di rispondere allora
    I can see much clearer now, I'm blind.
    Io fui già quel che voi siete, Quel ch'io son voi anco sarete.
    Remember that death is not the end, but only a transition
    All that we learn this time is carried beyond this life.

  4. #4
    Ciao,
    ho provato il codice che hai postato ed è molto simpatico, devo dire che pur conoscendo abbastanza bene excel si sono alcune cose che mi sfuggono e che studierò con un po' di calma nei prossimi giorni.
    Comunque il codice funziona e ottiene questo effetto: modificando il valore di una cella a cui, precedentemente, è stato attribuito lo stile percentuale (non parlo di formato della cella ma proprio di stile), viene colorata una percentuale della cella stessa, a partire da sinistra (come se la cella fosse una barra di avanzamento) pari al valore percentuale inserito.
    Il colore utilizzato varia in base al valore della cella perché è ottenuto con:
    RGB((Int(255 * Target.Value)), 255 - (Int(255 * Target.Value)), 0)
    dove Target.Value è il valore digitato nella cella.

    Per utilizzarlo devi compiere alcune operazioni che provo a spiegarti andando a memoria perché sono in ufficio e non ho Excel 2007 ma Excel 2003 che ha parecchie differenze nei menu.

    Intanto, perché una macro possa essere eseguita da Excel2007 è necessario che il foglio abbia estensione .xlsm quindi portati in questa situazione (rinomina il foglio che hai oppure fai "salva con nome..." oppure crea un foglio nuovo direttamente con quella estensione).

    Fatto questo apri il foglio excel e vai nell'ultimo menu a destra, credo che si chiami Sviluppo (parlo della barra che c'è in alto e in cui ci sono altri menu come Home, Layout e altri).

    Fra i vari pulsanti cerca quello che apre l'ambiente di sviluppo VbScript (credo che si chiami proprio ambiente di sviluppo... o editor dei comandi... o visualizza codice o qualcosa del genere).

    Cliccando su quel pulsante si apre un'altra finestra in cui va copiato e incollato il codice che ci hai postato.

    Torna ora al foglio excel e assicurati di non essere in "modalità di progettazione" (a volte excel ci va senza che nessuno glielo chieda) cercando un pulsantino con una squadretta da disegno un righello e una matita e assicurandoti che non sia attivo. In altre parole, se passandoci sopra, ti compare "esci da modalità di progettazione", cliccalo, se ti compare "entra in modalità di progettazione" lascialo stare.

    Ora non devi fare altro che assegnare lo stile percentuale alle celle che ti interessano (non so dove si trovi questo settaggio ma frugando un po' fra menu e pulsantini dovresti trovarlo, forse nel sottomenù "Formato") e inserire i valori che desideri.

    Tieni presente che ogni volta cha aprirai il foglio, excel ti comunicherà di aver disattivato le macro e dovrai attivarle a mano. Puoi però cliccare sulle opzioni e indicare ad excel una o più cartelle da considerare sicure ed excel attiverà le macro per tutti i fogli contenuti in quelle cartelle senza fare domande.

    Spero di essere stato abbastanza dettagliato
    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923

    Re: Utilizzo codice VBA su Excel

    Originariamente inviato da Fijix
    Insieme alla spiegazione si accettano file gia pronti all'uso qualora la sola spiegazione sia troppo difficile
    Voglia di lavorare saltami addosso.

    Il codice che hai postato è già funzionante, a parte l'errata formattazione, tipo i due if sulla stessa riga e qualche altro errore.

    codice:
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Text = "" Then
    Exit Sub
    End If
    If Target.Value > 1 Then
    Exit Sub
    End If
    If Target.Style = "Percent" Then
    Dim forma As Shape
    For Each forma In Target.Worksheet.Shapes
    If forma.Name = Target.Address Then
    forma.Delete
    Exit For
    End If
    Next
    Set forma = Target.Worksheet.Shapes.AddShape(msoShapeRectangle, Target.Left, Target.Top, Target.Width * Target.Value, Target.Height)
    forma.Name = Target.Address
    With forma
    .Line.Visible = false
    .Fill.Transparency = 0.5
    .Fill.ForeColor.RGB = RGB((Int(255 * Target.Value)), 255 - (Int(255 * Target.Value)), 0)
    End With
    End If
    End Sub
    Semplicemente devi aprire l'editor vba, fare doppio click sul foglio cui vuoi associare il codice e incollarlo.
    Le celle devono essere impostate con lo stile percentuale (l'icona col simbolo % per l'appunto) e solo quelle saranno oggetto della macro.

    edit. Avevo la finestra aperta e non mi ero accorto della precedente risposta già data. Scusate.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    35
    A volte la rocedura va altre no... poi ho notato che non riesce a sfumare il colore come ho visto nell'immagine dove ho preso il codice...

    piccola curiosità: come si calcola una percentuale di completamento? (del tipo Grandezza/Completato/Rimanente -> Perc. Compl)

  7. #7
    Ciao

    il calcolo della lunghezza della barra lo effettua la parte in rosso:

    Set forma = Target.Worksheet.Shapes.AddShape(msoShapeRectangle , Target.Left, Target.Top, Target.Width * Target.Value, Target.Height)

    in quel punto infatti viene creato l'oggetto “forma” (questo è il nome che l’autore del codice ha deciso di dare alla barra colorata) e gli vengono attribuite alcune caratteristiche:
    - Deve essere un rettangolo,
    - Il lato sinistro deve coincidere col lato sinistro del target (cioè la casella che contiene il valore)
    - Il lato superiore deve coincidere col lato superiore del target
    - La larghezza dev’essere pari alla larghezza della casella moltiplicata per il valore (percentuale) contenuto nella casella stessa
    - L’altezza dev’essere uguale a quella della casella

    Riguardo al fatto che a volte funziona e a volte no, ti dirò che lo ha fatto anche a me, era un errore veramente strano, per alcuni valori percentuali molto bassi si bloccava sull’istruzione forma.Name = Target.Address dandomi “Autorizzazione negata”. Poi la cosa è magicamente scomparsa ed è da ieri che ogni tanto ci gioco senza più avere problemi.
    Sinceramente non so dare una spiegazione a questo.

    Riguardo infine alla sfumatura, questo codice non la prevede perché come dicevo, il colore viene determinato con una formuletta ed applicato all’oggetto forma nel suo complesso, non sono previste sfumature.
    E’ però possibile che gli oggetti di tipo Shape prevedano anche questa opzione ma bisognerebbe studiarseli un po’.
    La sfumatura invece si ottiene fra diverse caselle con diversi valori, prova ad esempio a inserire i valori 10%, 20 %... 100% in caselle contigue e vedrai chiaramente la sfumatura dal verde al rosso.

    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.