Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    creazione grafici in serie,con excel

    ciao a tutti,
    ho realizzato una macro con excel,per creare grafici in serie,
    ho bisogno di ripetere la creazione di un grafico prelevando i dati da righe successive di volta in volta:
    ho creato un ciclo FOR ma non riesco a scrivere come far si che prenda i dati di volta in volta.
    ad esempio:
    ActiveChart.SeriesCollection(2).Values = _
    "=(foglio1!R1C1,foglio1!R1C2,foglio1!R1C3)"
    io vorrei che ripetesse l'operazione con la riga 2,3,...ecc.

    lo so che è banale ma ne ho bisogno...io ci capisco di php ma VB niente da fare...
    GRAZIE!

  2. #2

    Re: creazione grafici in serie,con excel

    Originariamente inviato da simoneborga
    ciao a tutti,
    ho realizzato una macro con excel,per creare grafici in serie,
    ho bisogno di ripetere la creazione di un grafico prelevando i dati da righe successive di volta in volta:
    ho creato un ciclo FOR ma non riesco a scrivere come far si che prenda i dati di volta in volta.
    ad esempio:

    io vorrei che ripetesse l'operazione con la riga 2,3,...ecc.

    lo so che è banale ma ne ho bisogno...io ci capisco di php ma VB niente da fare...
    GRAZIE!
    Prova a postare il codice di tutta la macro e non solo 1 riga !
    Anche perche', se li' metti un ciclo FOR, esegui di seguito tutti i grafici e vedi solo l'ultimo, quindi sarebbe inutile !
    IceCube_HT (VB6 fan Club)

  3. #3
    il problema è che la macro non sono riuscito a farla!!
    comunque, questa è una macro registrata da excel per la creazione di due grafici;già qui c'è il problema che il comando "ActiveSheet.Shapes("Grafico 9").IncrementTop 249#" non funziona in quanto il grafico cambia nome di volta in volta,e quindi mi dice che non esiste!!il ciclo for ho provato a farlo ma non ce l'ho fatta...
    Sub Macro1()
    Charts.Add
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=Sheets("Foglio1").Range("A1:/D1"), PlotBy _
    :=xlRows
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Foglio1"
    With ActiveChart
    .HasTitle = True
    .ChartTitle.Characters.Text = "prova 1"
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    End With
    ActiveWindow.Visible = False
    Windows("Cartel1").Activate
    Charts.Add
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=Sheets("Foglio1").Range("A2:/D2"), PlotBy _
    :=xlRows
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Foglio1"
    With ActiveChart
    .HasTitle = True
    .ChartTitle.Characters.Text = "prova 2"
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    End With
    ////// ActiveSheet.Shapes("Grafico 9").IncrementTop 249#
    End Sub

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    119
    Usa Cells nell'argomento della proprietà Range, è più agevole l'inserimento degli indici e quindi l'utilizzo nei cicli.

    Esempio:
    codice:
    Sheets(1).Range(Cells(2, 1), Cells(10, 3)).Select
    ... equivale a
    codice:
    Sheets(1).Range("A2:C10").Select

  5. #5
    grazie del consiglio,
    il mio problema è che nel ciclo for,ho creato una variabile index,ad esempio,per cambiare tipo di dato, ma se scrivo:
    for index=1 to 10
    sheets(1).Range(Cells( index , 1), Cells( index , 3)).Select
    end for
    next i
    non funziona!!!

  6. #6
    Originariamente inviato da simoneborga
    grazie del consiglio,
    il mio problema è che nel ciclo for,ho creato una variabile index,ad esempio,per cambiare tipo di dato, ma se scrivo:
    codice:
    for index=1 to 10
    sheets(1).Range(Cells( index , 1), Cells( index , 3)).Select
    end for
    next i
    non funziona!!!
    Non funziona, cosa significa ?

    Ti da' un errore di sintassi ? (E' il minimo, visto le castronerie ! ) .....se si' quale, su quale riga...

    Non di da' errore, ma non funziona come vorresti.... ecc, ecc...

    ...Se togli End For (non esiste) e Next i (visto che l'indice e' index), e metti SOLO il classico Next, come va' ?
    IceCube_HT (VB6 fan Club)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    119
    Con "End For" non dovrebbe neanche iniziare a girare, e ad ogni modo quel codice (corretto) credo sia talmente rapido da non poter vedere neanche quello che fa. (Dovrebbero comunque rimanere selezionate le celle "A10:C10")
    Prova una cosa del genere:
    codice:
    For index = 1 To 10
        With Sheets(1).Range(Cells(index, 1), Cells(index, index))
            If index Mod 2 = 0 Then
                .Interior.ColorIndex = 22
            Else
                .Interior.ColorIndex = 33
            End If
        End With
    Next index

  8. #8
    Grazie mille per i consigli!
    in ogni caso se scrivo nel modo seguente:
    Sub Macro1()

    For Index = 1 To 10
    Charts.Add
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=Sheets("Foglio1").Range(Cells(Index, 1), Cells(Index, 3)), PlotBy _
    :=xlColumns
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Foglio1"
    Next Index
    End Sub
    quando compila genera il seguente errore:

    "errore di run-time '1004'
    metodo 'cells' dell'oggetto '_global' non riuscito"

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    119
    Prova così:

    codice:
    Dim Rng As Range
    With Sheets("Foglio1") 
        For Index = 1 To 10
        Set Rng = .Range(.Cells(Index, 1), .Cells(Index, 3))
        Charts.Add
        ActiveChart.ChartType = xlColumnClustered
        ActiveChart.SetSourceData Rng, xlColumns
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Foglio1"
        Next Index
    End With

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 © 2025 vBulletin Solutions, Inc. All rights reserved.