macro per grafici

Anonimo
2017-03-17T16:23:37+00:00

Buongiorno,

vorrei modificare dei grafici tutti insieme, applicando le stesse caratteristiche, utilizzando la macro.

Ho provato a registrare una macro e vorrei fare in modo che questa applichi tutte le modifiche anche agli altri grafici presenti nello stesso foglio.

Che modifiche devo effettuare alla macro in modo che funzioni? 

ho provato ad utilizzare un ciclo For ma non funziona.

Sub ModificaGrafici()

'

' ModificaGrafici Macro

'

'

    ActiveSheet.ChartObjects("Grafico 22").Activate

    ActiveSheet.ChartObjects("Grafico 22").Activate

    ActiveChart.Axes(xlValue).AxisTitle.Select

    Selection.Format.TextFrame2.TextRange.Font.Size = 9

    ActiveChart.Axes(xlCategory).AxisTitle.Select

    Selection.Format.TextFrame2.TextRange.Font.Size = 9

    ActiveChart.Axes(xlCategory).Select

    ActiveChart.Axes(xlCategory).MaximumScale = 10

    ActiveChart.Axes(xlValue).Select

    ActiveChart.Axes(xlValue).MinimumScale = -4

    ActiveChart.Axes(xlValue).MaximumScale = 4

    ActiveChart.FullSeriesCollection(3).Select

    With Selection.Format.Line

        .Visible = msoTrue

        .Weight = 0.5

    End With

End Sub

Grazie

Stefania Armorina

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

5 risposte

Ordina per: Più utili
  1. Anonimo
    2017-03-21T10:34:09+00:00

    Ciao Stefania,

    ha funzionato tutto, tranne per la parte di modifica dello spessore della linea dei grafici, perché vorrei che tutte le serie del grafico abbiano lo spessore pari 0.5.

     With .SeriesCollection(3).Format.Line

                    .Visible = msoTrue

                    .Weight = 0.5

     End With

    Ho scaricato il tuo file. Avendo visto i tuoi grafici, nel mio codice, ho modificato i valori minimo e massimo della scala dell'asse verticale da -4 e 4 a -8 e 8. Inoltre, ho modificato il codice per gestire la possibiltà che ci siano un numero diverso di serie di dati e ho imposto lo spessore di 0,5 a tutte le serie.

    Quindi, il codice diventa:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim oChartobj As ChartObject

        Dim i As Long

        Const sFoglio As String = "U1 REL"             '<<== Modifica

        Set WB = ThisWorkbook

        Set SH = WB.Sheets(sFoglio)

        For Each oChartobj In SH.ChartObjects

            With oChartobj.Chart

                .Parent.Select

                With .Axes(xlValue)

                    .AxisTitle.Font.Size = 9

                    .MaximumScale = 8

                    .MinimumScale = -8

                End With

                With .SeriesCollection

                    For i = 1 To .Count

                        With .Item(i).Format.Line

                            .Visible = msoTrue

                            .Weight = 0.5

                        End With

                    Next i

                End With

            End With

        Next oChartobj

    End Sub

    '<<=========

    Potresti scaricare il mio file di prova Stefania20170321.xlsm a:

    https://www.dropbox.com/s/11kvuke0jxddbdo/Stefania20170321.xlsm?dl=0

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-03-20T22:53:53+00:00

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-03-20T22:36:17+00:00

    Ciao Stefania.

    ha funzionato tutto, tranne per la parte di modifica dello spessore della linea dei grafici, perché vorrei che tutte le serie del grafico abbiano lo spessore pari 0.5.

     With .SeriesCollection(3).Format.Line

                    .Visible = msoTrue

                    .Weight = 0.5

     End With

    Grazie

    Stefania Armorina

    Nel mio file di prova, tutto chiesto ha funzionato senza problema.

    Quindi, ti chiederei gentilmente di caricare il file problematico, dopo averlo depurato di dati sensibili, su un servizio di condivisione di file, per esempio Microsoft

    OneDrive o DropBox, e di postare un link al file in una risposta qui.

    Per caricare il file su Microsoft OneDrive, vedi:

    https://support.office.com/it-it/article/Condividere-file-e-cartelle-di-OneDrive-9fcc2f7d-de0c-4cec-93b0-a82024800c07

    Nel caso di DropBox, vedi:

    https://www.dropbox.com/it/help/topics/sharing_files_and_folders

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-03-20T21:50:04+00:00

    Grazie per la risposta. 

    ha funzionato tutto, tranne per la parte di modifica dello spessore della linea dei grafici, perché vorrei che tutte le serie del grafico abbiano lo spessore pari 0.5.

     With .SeriesCollection(3).Format.Line

                    .Visible = msoTrue

                    .Weight = 0.5

     End With

    Grazie

    Stefania Armorina

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-03-19T00:21:30+00:00

    Ciao Stafania,

    vorrei modificare dei grafici tutti insieme, applicando le stesse caratteristiche, utilizzando la macro.

    Ho provato a registrare una macro e vorrei fare in modo che questa applichi tutte le modifiche anche agli altri grafici presenti nello stesso foglio.

    Che modifiche devo effettuare alla macro in modo che funzioni? 

    ho provato ad utilizzare un ciclo For ma non funziona.

    Sub ModificaGrafici()

    '

    ' ModificaGrafici Macro

    '

    '

        ActiveSheet.ChartObjects("Grafico 22").Activate

        ActiveSheet.ChartObjects("Grafico 22").Activate

        ActiveChart.Axes(xlValue).AxisTitle.Select

        Selection.Format.TextFrame2.TextRange.Font.Size = 9

        ActiveChart.Axes(xlCategory).AxisTitle.Select

        Selection.Format.TextFrame2.TextRange.Font.Size = 9

        ActiveChart.Axes(xlCategory).Select

        ActiveChart.Axes(xlCategory).MaximumScale = 10

        ActiveChart.Axes(xlValue).Select

        ActiveChart.Axes(xlValue).MinimumScale = -4

        ActiveChart.Axes(xlValue).MaximumScale = 4

        ActiveChart.FullSeriesCollection(3).Select

        With Selection.Format.Line

            .Visible = msoTrue

            .Weight = 0.5

        End With

    End Sub

    Prova qualcosa del genere:

    • Alt+F11 per aprire l'editor di VBA
    • Alt+IMper inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim WB As Workbook

        Dim SH As Worksheet

        Dim oChartobj As ChartObject

        Const sFoglio As String = "Foglio1"             '<<== Modifica

        Set WB = ThisWorkbook

        Set SH = WB.Sheets(sFoglio)

        For Each oChartobj In SH.ChartObjects

            With oChartobj.Chart

                With .Axes(xlValue)

                    .AxisTitle.Font.Size = 9

                    .MaximumScale = 4

                    .MinimumScale = -4

                End With

                With .SeriesCollection(3).Format.Line

                    .Visible = msoTrue

                    .Weight = 0.5

                End With

            End With

        Next oChartobj

    End Sub

    '<<========= 

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel
    • Salva il file con l’estensione xlsm
    • Alt+F8 per aprire  la finestra di gestione delle macro
    • Seleziona Tester | Esegui

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento