|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2690
|
[VBA] - Modificare grafico Excel con VBA
Salve ragazzi,
ho creato la seguente tabella di dati tramite Excel: E realizzato quindi il seguente grafico: Tramite una macro volevo VBA fare in modo di modificare il grafico già esistente ma con la possibilità di scegliere un range di mesi sempre consecutivi. Esempio da Marzo a Giugno oppure da Gennaio a Maggio e così via. Mi aiutate a realizzare questa macro? In allegato ttrovate il file Excel in formato zip
__________________
Unisciti a noi: http://www.swproduction.altervista.org/ - http://www.enews.altervista.org/
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Interessante quesito.
Beh, questo sì che è il modo di porre una domanda ! Non ti sei certo semplificato la vita nel progettare la cosa ( 3 cosucce su 3 fogli differenti, ma immagino sia solo un assaggio di una qualcosa di più grande che vorrai implementare... ). Venendo al sodo, la risolverei così : 1. Codice da mettere in un Modulo VBA : Codice:
Public Function letteraCol(nomeFoglio As String, val As Integer) As String
Sheets(nomeFoglio).Select
letteraCol = Left(Cells(1, val).Address(1, 0), InStr(1, Cells(1, val).Address(1, 0), "$") - 1)
End Function
Public Sub AggiornaGrafico(nomeGrafico As String, meseDA As String, meseA As String)
Dim indMeseDA As String
Dim indMeseA As String
Dim R As Range
Set R = Sheets("Elenco").Range("A1:G4").Find(meseDA, lookat:=xlPart)
indMeseDA = R.Address
Set R = Worksheets("Elenco").Range("A1:G4").Find(meseA, lookat:=xlPart)
indMeseA = letteraCol("Elenco", R.Column) & "4"
Sheets("Grafico").Select
ActiveSheet.ChartObjects(nomeGrafico).Activate
ActiveChart.SetSourceData Source:=Sheets("Elenco").Range("A1:A4," & indMeseDA & ":" & indMeseA), PlotBy:=xlRows
End Sub
Codice:
Private Sub CommandButton1_Click()
'Nome Grafico:
Dim nomeGr As String
Dim GR As ChartObject
For Each GR In Sheets("Grafico").ChartObjects
nomeGr = GR.Name
Exit For
Next
AggiornaGrafico nomeGr, Range("B6").Text, Range("B7").Text
End Sub
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jun 2001
Città: Catania
Messaggi: 2690
|
Quote:
Grazie 1000! Invece adesso vorrei creare un bottone all'interno del quale inserire il codice in modo da copiare su un Foglio SETUP del file Template.xls il contenuto della prima riga di un foglio FOGLIO1 che sta in un altro foglio Excel: Elenco da copiare.xls così da avere il seguente foglio con accanto il numero progressivo: ![]() Quì potete scaricare il file xls zippato: http://cid-57f2531272604143.skydrive...he%20Excel.zip Grazie ancora!
__________________
Unisciti a noi: http://www.swproduction.altervista.org/ - http://www.enews.altervista.org/
Ultima modifica di lucausa75 : 09-11-2008 alle 18:53. Motivo: Inserimento file xls zippato |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Ci si può costruire una Function che, chiamata n volte in un ciclo, vada a leggere tutti i valori del file .xls desiderato, senza bisogno di aprirlo.
Una cosa del genere : Codice:
Public Function LeggiValore(percorsoWBook As String, nomeWBook As String, nomeWSheet As String, indirizzo As String) As Variant
Dim strMacro As String
strMacro = "'" & percorsoWBook & "[" & nomeWBook & "]" & nomeWSheet & "'!" & Range(indirizzo).Address(True, True, xlR1C1)
LeggiValore = ExecuteExcel4Macro(strMacro)
End Function
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:46.
























