Shapes & Registratore macro

Anonimo
2010-07-28T13:10:43+00:00

Ciao a tutti!

Da quando sono passato a Excel 2007 ho serie difficoltà a gestire gli oggetti grafici.

In questa versione sono aumetnate considerevolmente le caratteristiche degli oggetti grafici (rettangoli, cerchi...) ma con essi la difficoltà (mia) di gestirli via codice.

In passato ovviavo alla mia scarsa conoscenza del codice per la gestione degli oggetti, attingendo a piene mani dal Registratore Macro. Lo avviavo e facevo tutte le operazioni di modifica necessarie alla mia forma. Poi copiavo (adattandolo) il codice registrato nella mia macro...bei momenti!

Ora il Registratore Macro non registra alcuna riga di codice quando lavoro sulle shapes e mi tocca provare per ore sino ad ottenere la forma che desideravo...il più delle volte senza riuscirci.

Un conto è creare un rettangolo dai bordi arrotondati, un altro è creare un rettangolo con lo stile "Effetto marcato - colore 2" definito negli Stili forma (Ribbon Formato).

A questo punto ho cercato avidamente suggerimenti nell'help in linea e nel web con scarsi risultati... :-(

Chi i sa indicare dove cercare un po' di letteratura su questo tema?

Grazie

Sergiovery

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2010-07-28T17:31:51+00:00

Ciao a tutti!

Da quando sono passato a Excel 2007 ho serie difficoltà a gestire gli oggetti grafici.

In questa versione sono aumetnate considerevolmente le caratteristiche degli oggetti grafici (rettangoli, cerchi...) ma con essi la difficoltà (mia) di gestirli via codice.

In passato ovviavo alla mia scarsa conoscenza del codice per la gestione degli oggetti, attingendo a piene mani dal Registratore Macro. Lo avviavo e facevo tutte le operazioni di modifica necessarie alla mia forma. Poi copiavo (adattandolo) il codice registrato nella mia macro...bei momenti!

Ora il Registratore Macro non registra alcuna riga di codice quando lavoro sulle shapes e mi tocca provare per ore sino ad ottenere la forma che desideravo...il più delle volte senza riuscirci.

Un conto è creare un rettangolo dai bordi arrotondati, un altro è creare un rettangolo con lo stile "Effetto marcato - colore 2" definito negli Stili forma (Ribbon Formato).

A questo punto ho cercato avidamente suggerimenti nell'help in linea e nel web con scarsi risultati... :-(

Chi i sa indicare dove cercare un po' di letteratura su questo tema?

 

Purtroppo è un bug noto del vb di Excel2007 quello di non registrare quanto vorresti. Vedi qui se ti aiuta. Apri un nuovo file. Fai girare questa macro:

Public Sub m()

    Dim lng As Long

    Dim lTop As Long

    lTop = 5

    For lng = 1 To 42

        ActiveSheet.Shapes.AddShape( _

            msoShapeRoundedRectangle, 20, lTop, 105, 60 _

            ).Select

        Selection.ShapeRange.ShapeStyle = lng

        Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "msoShapeStylePreset" & lng

        lTop = lTop + 65

   Next

End Sub

Visto nel foglio? Bello vero? ;-) Prova di seguirmi nel ragionamento. Il segreto è tutto qui:

     Selection.ShapeRange.ShapeStyle = lng

dove ShapeStyle si aspetta una costante msoShapeStylePresetn, dove n è un valore numerico. Il risultato che hai a video dovrebbe chiarire la cosa, in quanto all0interno di ciascuna Shape ho messo la relativa costante.  Se nella guida del vba di Excel vai a questa voce: Shapes.AddShape, metodo e poi selezioni: MsoAutoShapeType, trovi invece le costanti da utilizzare qui:

        ActiveSheet.Shapes.AddShape( _

            msoShapeRoundedRectangle, 20, lTop, 105, 60 _

            ).Select

al posto di: msoShapeRoundedRectangle che, nell'esempio, crea un rettangolo arrotondato. Intanto prova e poi lo sai, siamo sempre(quasi sempre qui). Grazie per l'attenzione.


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-07-28T20:26:31+00:00

    Sbigottito!

    Mauro, non so che dire, ogni domanda è un'inezia per te! Mi sa che il tuo stipendio (qualunque esso sia ;-) ) è più che meritato!

    Grazie

     

    Grazie per il cortese riscontro.


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-07-28T17:38:51+00:00

    Sbigottito!

    Mauro, non so che dire, ogni domanda è un'inezia per te! Mi sa che il tuo stipendio (qualunque esso sia ;-) ) è più che meritato!

    Grazie

    Sergiovery

    La risposta è stata utile?

    0 commenti Nessun commento