Condividi tramite

WBA Excel - Esecuzione dell'istruzione: Worksheets.Item(X).Cells(I , J).Value = Cost

Anonimo
2015-02-19T16:43:46+00:00

Ho scoperto che l'istruzione viene eseguita solo se in una Sub() richiamata come macro dalla barra degli strumenti.

Se si trova inserita in una Function definita dall'utente dà origine ad errore.

Lo stesso accade se richiamo la Sub dall'interno di una qualsiasi altra funzione o sub.

In vecchie versioni Excel non ho mai avuto problemi.

Ora non riesco in alcun modo ad inserire da programma un qualsiasi valore in una cella!

Come posso fare?

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

Risposta accettata dall'autore della domanda

Anonimo
2015-02-20T20:13:04+00:00

Ciao RinoIzzo,

Di nuovo grazie. E' proprio come dici! Ho risolto il problema. Ho fatto eseguire la sub Testit da una Form con un Command Button  (al Click richiamo Testit e tutto funziona)!

Mi fa piacere che hai risolto il problema e ti ringrazio del tuo cortese riscontro.

Per chiudere questo thread, ti chiederei di gentilmente segnare la mia risposta come Risposta. In questo modo, tu aiuterai anche coloro che potrebbero un domani cercare soluzioni ai problemi simili negli archivi della comunità.

A questo proposito, vedi la Guida Introduttiva

http://answers.microsoft.com/it-it/page/gettingstarted

Più in particolare, vedi la sezione:Promuovere i contenuti migliori Promuovere i contenuti migliori

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

Promuovere i contenuti migliori

L'utente riceverà una notifica tramite messaggio di posta elettronica quando qualcuno nella community risponde al post. Se si è posta una domanda e la risposta risolve il problema, aprire il thread e contrassegnarla come risposta.

Fare clic sul collegamento del thread nel messaggio di posta elettronica della notifica o trovare il thread nel proprio profilo.

Fare clic sull'opzione Contrassegna come risposta .

Immagine

'<<'------------------

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2015-02-19T17:28:38+00:00

Ciao RinoIzzo,

Ho scoperto che l'istruzione viene eseguita solo se in una Sub() richiamata come macro dalla barra degli strumenti.

Se si trova inserita in una Function definita dall'utente dà origine ad errore.

Lo stesso accade se richiamo la Sub dall'interno di una qualsiasi altra funzione o sub.

In vecchie versioni Excel non ho mai avuto problemi.

Ora non riesco in alcun modo ad inserire da programma un qualsiasi valore in una cella!

Come posso fare?

 

Indipendentemente dalla versione di Excel, non credo che la funzione utente possa funzionare! 

Più in particolare, una funzione utente  non può modificare il suo ambiente; può solo restituire un valore alla cella nel quale si trova la funzione.

Tuttavia, se la tua istruzione viene utilizzata in una funzione in un modulo di codice standard, non si dovrebbe incontrare un problema in qualsiasi versione di Excel. Ad esempio, il seguente codice funziona come previsto per me:

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

Option Explicit

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

Public Sub TestIt()

    Call ABC("Foglio1", 200.25)

End Sub

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

Public Function ABC(X As String, Cost As Double)

    Dim i As Long, j As Long

    i = 1

    j = 2

    Worksheets.Item(X).Cells(i, j).Value = Cost

End Function

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

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-02-20T17:21:53+00:00

    Di nuovo grazie. E' proprio come dici! Ho risolto il problema. Ho fatto eseguire la sub Testit da una Form con un Command Button  (al Click richiamo Testit e tutto funziona)!

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-02-19T21:07:47+00:00

    Ciao RinoIzzo,

    Grazie per la risposta, ma il problema rimane sempre lo stesso:

    devo avviare la Sub Testit() dalla barra del menu e non riesco ad eseguirla dall'interno di una Function da me definita.

    Non capisco! Utilizzando il mio codice di esempio, la funzione viene chiamata dalla procedura TestIt. Se tu stai tentando di chiamare una procedura da una funzione utente (UDF), credo non sia possibile.

    Come già spiegato, una funzione utente (UDF) può solo restituire un valore; non può cambiare il suo ambiente e, più in particolare, non può chiamare un'altra procedura. Se questa fosse la tua intenzione, forse potresti considerare l'utilizzo di una procedura  di evento, ad esempio una procedura Worksheet_Change.

    Se hai ancora una problema, forse sarebbe opportuno postare il codice che hai indicato funziona in versioni precedenti di Excel. In quest'ultimo caso, ti chiederei anche di spiegare dove e come viene utilizzato il UDF.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-02-19T19:20:20+00:00

    Grazie per la risposta, ma il problema rimane sempre lo stesso:

    devo avviare la Sub Testit() dalla barra del menu e non riesco ad eseguirla dall'interno di una Function da me definita.

    La risposta è stata utile?

    0 commenti Nessun commento