faretesto > microsoft.* > microsoft.office.excel

tempesta (31.10.2004, 20:30)
Visto che pare la cosa non sia banale, mi sono messo un po' sotto, ma
niente: non riesco a fare accettare a VBA un riferimento con variabili a
celle nelle seguenti linee di codice:

Worksheets("graf. stagioni").ChartObjects(1).Activate
ActiveChart.SeriesCollection.Add _
Source:=Worksheets("anom. stag.").Range(b1:b10))

L'unica cosa che mi serve è poter usare ESATTAMENTE questo codice (per
aggiungere una serie), ma fare in modo che le celle sorgenti carino di volta
in volta. Solo che appena:

Worksheets("graf. stagioni").ChartObjects(1).Activate
ActiveChart.SeriesCollection.Add _
Source:=Worksheets("anom. stag.").Range(Cells(a+1,b+1), Cells(c,d))

mi da l'errore: "Metodo cells dell'oggetto global non riuscito!". E se
clicco sulle istruzioni non compaiono neanche !!! (Credo che quest'ultimo
sia un errore della guida o un riferimento della stessa a una pagina
inesistente!).

Ditemi come devo fare!!! Vi prego!

Grazie.
fernando cinquegrani (31.10.2004, 20:42)
In news:4bahd.2941$p21.371,
tempesta scrive:
> Visto che pare la cosa non sia banale, mi sono messo un po' sotto, ma
> niente: non riesco a fare accettare a VBA un riferimento con variabili a
> celle nelle seguenti linee di codice:
> Worksheets("graf. stagioni").ChartObjects(1).Activate
> ActiveChart.SeriesCollection.Add _
> Source:=Worksheets("anom. stag.").Range(b1:b10))


....Range("b1:b10")
.f
tempesta (01.11.2004, 02:44)
>> Worksheets("graf. stagioni").ChartObjects(1).Activate
>> ActiveChart.SeriesCollection.Add _
>> Source:=Worksheets("anom. stag.").Range(b1:b10))

> ...Range("b1:b10")


Si, beh... mi sono dimenticato le vergolette, è vero... questo lo so. La
questione è che non funziona così!!!
Appena in questo codice sostituisci "Range("b1:b10")" (che ovviamente
funziona!!!) con "Range(cells(x,y), cells(a,b))", non funziona piu'!!!

Ho risolto in altri casi con

with
....
end with

Ma in questo caso non so proprio che fare!!! Perchè non va?

Grazie comunque.
cucchiaino (01.11.2004, 03:49)
tempesta:

> Worksheets("graf. stagioni").ChartObjects(1).Activate
> ActiveChart.SeriesCollection.Add _
> Source:=Worksheets("anom. stag.").Range(Cells(a+1,b+1),
> Cells(c,d))


> mi da l'errore: "Metodo cells dell'oggetto global non riuscito!"


Hai già provato con:

With Worksheets("anom. stag.")
Worksheets("graf. stagioni").ChartObjects(1).Activate
ActiveChart.SeriesCollection.Add _
Source:=.Range(.Cells(a + 1, b + 1), .Cells(c, d))
End With

?

( )---cucchiaino
tempesta (01.11.2004, 04:09)
> Hai già provato con:
> With Worksheets("anom. stag.")
> Worksheets("graf. stagioni").ChartObjects(1).Activate
> ActiveChart.SeriesCollection.Add _
> Source:=.Range(.Cells(a + 1, b + 1), .Cells(c, d))
> End With


Caro cucchiaino: sono le 3 passate. E' ore che provo e riprovo. Ora leggo il
tuo post. Ho provato il metodo che dici tu, e la sai una cosa? FUNZIONA!

Mi hai quasi tirato fuori da un incubo!!!

Adesso pero', dato che è la seconda volta che faccio una cosa che funziona
come questa e non so perchè... mi dici perchè con il tuo codice funge e con
il mio no?
Il mio era:

> With Worksheets("anom. stag.")
> Worksheets("graf. stagioni").ChartObjects(1).Activate
> ActiveChart.SeriesCollection.Add _
> Source:=worksheet("temporaneo").Range(.Cells(a + 1, b + 1), .Cells(c,
> d))
> End With


E' assurdo che se io gli dico una cosa in piu' (worksheet("temporaneo")),
invece di essere piu' contento, il compilatore non funziona!!! :-(

Avro' lo stesso problema appena voglio modificare (dinamicamente!!!):

ActiveChart.SeriesCollection(1).Name = "=""provainverno2"""

con:

ActiveChart.SeriesCollection(1).Name = "=""nome variabile"""

Per ora ti ringrazio davvero tanto!!!
Ignazio (01.11.2004, 19:20)
"tempesta" <tempesta_12> ha scritto nel messaggio
news:2794

> E' assurdo che se io gli dico una cosa in piu' (worksheet("temporaneo")),
> invece di essere piu' contento, il compilatore non funziona!!! :-(


Ciao tempesta,
certo, più cose diciamo, più il compilatore è contento, però deve esserci
coerenza tra le cose che diciamo, altrimenti .... lui si arrabbia :-)

Con l'istruzione:
Source:=Worksheets("temporaneo").Range(.Cells(a + 1, b + 1), .Cells(c, d))
inserita tra le istruzioni:
With Worksheets("anom. stag.")
.....
End With
in pratica tu dici:
cucchiaino (02.11.2004, 03:00)
tempesta:

> Caro cucchiaino: sono le 3 passate. E' ore che provo e riprovo. Ora
> leggo il tuo post. Ho provato il metodo che dici tu, e la sai una
> cosa? FUNZIONA!
> Mi hai quasi tirato fuori da un incubo!!!
> Adesso pero', dato che è la seconda volta che faccio una cosa che
> funziona come questa e non so perchè... mi dici perchè con il tuo
> codice funge e con il mio no?


Ciao tempesta.

E' importantissimo quando si utilizzano dei riferimenti, proprietà
o altro, sapere e quindi indicare a vb gli OGGETTI ai quali
intendiamo applicarli. Mediante il "." noi indichiamo a vb una
parentela diretta.

Esempio:

"L'area del pavimento del soggiorno della casa di Mario è 100 mq"
tradotto in vbese diventa

x = Mario.casa.soggiorno.pavimento.area

se io scrivo

x = soggiorno.pavimento.area

intendo l'area del pavimento del soggiorno della casa in cui
CI TROVIAMO,
che potrebbe essere quella di Mario, ma questo non è specificato.
Per farlo ti accompagno in casa di Mario (Mario.casa.Activate) dove,
senza rischio di sbagliare, posso dire:

l'area del pavimento di QUESTO soggiorno è 100 mq

x = ActiveCasa.soggiorno.pavimento.area
tempesta (02.11.2004, 03:32)
> Molto probabilmente questi concetti per te erano già noti ma ...
> sfuggiti!
> Ma visto che ci troviamo in un ng ribadirli non guasta!


Mah... mica tanto... sto imparando alla velocità della luce... anche grazie
a voi! ;-)
Fino a 10 giorni fa non sapevo neanche che voleva dire range!!!
Adesso pero' pare tutto chiaro...

> Non è esattamente "lo stesso problema" di prima. Devi solo sostituire
> all'assegnazione diretta "provainverno2" una variabile concatenandone
> il testo.
> ActiveChart.SeriesCollection(1).Name = "=" & variabile & ""


Benissimo.
Credo che funzionerà anche questo.
Ti ringrazio anche per questo consiglio!!!

> Ciao tempesta. Spero che smetta un pò di piovere ....


Lo spero anche io... dovrei proprio cambiare nick, eh?
Comincio ad amare i NG!!! ;-)
Praticamente un corso intensivo di VBA... gratuito!

Grazie... anche a Ignazio!!!
Discussioni simili