FUNZIONE ESEGUITA DA MACRO

di il
4 risposte

FUNZIONE ESEGUITA DA MACRO

Cari amici avrei un nuovo problema...

Questa è la funzione \"ALLUNGA\" che prende in ingresso un vettore e un numero intero e restituisce un altro vettore:

Function Allunga(Vettore, n As Integer) As Variant
ReDim temp(n ^ 2, 1)
Dim i As Integer
Dim j As Integer
Dim cont As Integer
cont = 0
For i = 1 To n
For j = 1 To n
cont = cont + 1
temp(cont, 1) = Vettore(i) * Vettore(j)
Next
Next
Allunga = temp
End Function


All'interno di una macro io vorrei che venisse eseguita la funzione... ad esempio leggo n da una certa cella e poi vorrei che dalla casella A1 fino ad An^2 mettesse il risultato di Allunga(B1:Bn,n)...

qualcosa del tipo
Range(\"A1:An^2\").Select
Selection.FormulaArray = \"=allunga(B1:Bn,n)\"

mi potete aiutare?

Non posso far riempire le celle alla funzione o ad una sub perchè nel foglio ho bisogno che compia proprio \"=allunga(...)\" dato che poi devo usare il risolutore per ottimizzare una funzione del vettore ottenuto con allunga(B1:Bn) cambiando le celle di partenza B1:Bn...

Se non sono stato chiaro in qualcosa ditemelo

4 Risposte

  • Re: FUNZIONE ESEGUITA DA MACRO

    Ciao.. invece di Range devi usare il comando cells che ha come parametri indice della riga e della colonna della cella che vuoi leggere o modificare..
    se fai un ciclo cn dentro cells e i relativi comandi per modificare la cella e incrementare gli indici relativi alla cella successiva del foglio il gioco è fatto!!

    eccoti un esempio:

    dim i as integer

    for i = 1 to n^2
    cells(1, i).value = v(indexPosVettore)
    next

    così vengono modificate le celle A1..An^2.. se ad esempio nn vuoi partire da A1, ma da A5 ti basta cambiare la riga dentro il for così:

    cells(5, i + 4).value = v(indexPosVettore)

    Saluti...
  • Re: FUNZIONE ESEGUITA DA MACRO

    Il problema è che poi se faccio risolutore su una funzione di A1:An^2 dicendogli di cambiare le celle \"di origine\" non mi fa un tubo perchè non recepisce un legame diretto...
    Quindi mi serviva che sul foglio ci fosse proprio =Allunga(...) capisci?
    Non mi serve una macro che riempia le celle...
  • Re: FUNZIONE ESEGUITA DA MACRO

    Ah.. scusami.. ma ho capito ancora a metà.. facciamo un esempio pratico:

    consideriamo le celle da A1 a A6 che sarebbero le tue celle da 1 a n..

    le celle da 1 a n^2 quindi ad esempio potrebbero essere da B1 ad B36.. giusto??

    se così fosse in B1 vorresti scrivere un testo, o una formula??
    e in B2??.. la stessa formula di B1 .. o leggermente modificata??
    e in Bn.. e in Bn^2??

    scusami se mi dilungo così tanto.. ma è per capire meglio e per cercare di aiutarti meglio...

    Saluti...
  • Re: FUNZIONE ESEGUITA DA MACRO

    Rieccomi dopo le lunghe vacanze

    Quello che io volevo è che nelle celle ad es. come hai scritto tu da B1 a B36 fossero messi gli n^2 elementi di Allunga(Vettore) dove Vettore sono gli elementi da A1 ad A6
Devi accedere o registrarti per scrivere nel forum
4 risposte