Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

passare un intervallo di celle a una funzione

148 views
Skip to first unread message

leo99

unread,
Oct 21, 2015, 11:51:00 AM10/21/15
to
Ciao a tutti. Sto cercando di richiamare una funzione, tramite "call"
all'interno di worksheet_calculate. Questa funzione riceve in ingresso
Selection.rows.
Io vorrei passare un intervallo di celle manualmente, senza doverle
selezionare, e sono celle non necessariamente contigue, per esempio
"A1", "A3", "A5".
Finora ho usato una cosa tipo
Union(Range("int1"),Range("int2"),Range("int3").Select
ma se per caso sto lavorando su un altro file Excel ricevo un errore,
probabilmente perchè int1, int2 e int3 non sono definiti in quel foglio.
Inoltre secondo me usando Select rallento un po' l'esecuzione e io ho
bisogno della massima reattività.
Come posso fare?

Vittorio

unread,
Oct 21, 2015, 4:27:20 PM10/21/15
to


"leo99" ha scritto nel messaggio news:n08c90$a2c$1...@speranza.aioe.org...
<Io vorrei passare un intervallo di celle manualmente, senza doverle
<selezionare, e sono celle non necessariamente contigue, per esempio
<"A1", "A3", "A5".



cosa intendi per "manualmente" ?

Il range come lo vorresti passare alla funzione?
Potresti indicarlo digitandolo in una UserForm che si apre , che poi lo
passi alla funzione?

issdr

unread,
Oct 21, 2015, 4:42:38 PM10/21/15
to
leo99 <l...@nospam.invalid> writes:

> Ciao a tutti. Sto cercando di richiamare una funzione, tramite "call"
> all'interno di worksheet_calculate. Questa funzione riceve in ingresso
> Selection.rows.
> Io vorrei passare un intervallo di celle manualmente, senza doverle
> selezionare, e sono celle non necessariamente contigue, per esempio
> "A1", "A3", "A5".
> Finora ho usato una cosa tipo
> Union(Range("int1"),Range("int2"),Range("int3").Select
> ma se per caso sto lavorando su un altro file Excel ricevo un errore,
> probabilmente perchè int1, int2 e int3 non sono definiti in quel
> foglio.

attiva il foglio su cui vuoi operare con VBA, es.

Worksheets("Foglio1").Activate


> Inoltre secondo me usando Select rallento un po' l'esecuzione e io ho
> bisogno della massima reattività.
> Come posso fare?

invece di selezionarlo, svolgi direttamente l'azione sull'unione (se è
disponibile ciò che intendi fare). dovrebbe aiutarti il menu contestuale
in questo, quando digiti il punto prima di scivere "Select"

per aiuti più circostanziati ti consiglio di condividere la tua funzione.

ciao

leo99

unread,
Oct 22, 2015, 3:36:09 AM10/22/15
to
Vittorio ha scritto:
> cosa intendi per "manualmente" ?

esempio, ora è
call fun1(selection.rows)

e vorrei diventasse una cosa del tipo

call fun1(range("intervallo1"))

comunque ho risolto, vedi risposta sotto

> Il range come lo vorresti passare alla funzione?
> Potresti indicarlo digitandolo in una UserForm che si apre , che poi
> lo passi alla funzione?

In realtà vado a leggere una stringa in una cella prestabilita, per
esempio una cosa del tipo "1;3;5". La colonna è sempre la stessa (A)
quindi alla fine ricavo che il mio intervallo fa riferimentoa ad A1, A3, A5.

leo99

unread,
Oct 22, 2015, 4:10:09 AM10/22/15
to
issdr ha scritto:
> attiva il foglio su cui vuoi operare con VBA, es.
>
> Worksheets("Foglio1").Activate

Infatti immaginavo, mi pare impossibile non ci sia un altro modo. Vorrei
semplicemente che, mentre ho attivo un altro file in un'altra finestra,
la funzione worksheet_calculate continuasse a ciclare normalmente in
background, leggendo gli intervalli da me definiti in *quel* foglio.
Per ora ho risolto così: apro 2 istanze di Excel, in una metto il mio
file con worksheet_calculate, nell'altra tutto il resto.

> invece di selezionarlo, svolgi direttamente l'azione sull'unione (se è
> disponibile ciò che intendi fare). dovrebbe aiutarti il menu contestuale
> in questo, quando digiti il punto prima di scivere "Select"

Non so perchè non ci ho pensato :-)
una cosa tipo

set int4=union(range("int1"),range("int2"),range("int3"))
call fun(int4)

funziona perfettamente

grazie a entrambi per gli spunti
0 new messages