Condividi:        

[vba] semplice ma...

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[vba] semplice ma...

Postdi ramset64 » 16/11/10 18:37

Dim MemCumx(30) as long

For z = 1 To 30

MemCumx(z) = z


Next z

x = Application.WorksheetFunction.Match(Application.WorksheetFunction.Max(MemCumx()), MemCumx(), 0)

Da questo semplice codice mi aspetto che il valore x sia uguale a 30 ovvero il maggiore delle variabili MemCumx(1) - MemCumx(30) eppure mi viene sempre restituito 31.... dove cavolo sbaglio?
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Sponsor
 

Re: [vba] semplice ma...

Postdi ramset64 » 16/11/10 18:46

Prima che qualcuno, giustamente, mi suggerisca che basta srivere Application.WorksheetFunction.Max(MemCumx()) per avere il valore massimo, specifico che a me serve individuare la z del valore massimo per poterlo comparare con altra tabella. :-)
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] semplice ma...

Postdi Flash30005 » 16/11/10 21:52

Prova così
Codice: Seleziona tutto
Dim MemCumx(30) as long
For z = 1 To 30
MemCumx(z) = z
If z = 30 then goto saltaZ
Next z
saltaz:
x = Application.WorksheetFunction.Match(Application.WorksheetFunction.Max(MemCumx()), MemCumx(), 0)

Il problema sta nel fatto che il for next lavora benissimo ma quando ha raggiunto il valore massimo (30) il suo next z aggiunge 1 a 30 e il For non lo esegue più ma z è ormai al valore superiore da quello che ti aspettavi

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba] semplice ma...

Postdi ramset64 » 16/11/10 22:06

Ciao Flash, ho provato il tuo suggerimento (in realtà l'avevo già provato anche prima) ma continuo ad ottenere 31 ed in effetti non può essere quella da te suggerita la soluzione.
Continua ad essere questa la formula che non funziona:
x = Application.WorksheetFunction.Match(Application.WorksheetFunction.Max(MemCumx()), MemCumx(), 0)
mentre il semplice max della variabile ovvero:
Application.WorksheetFunction.Max(MemCumx())
restituisce correttamente 30, il problema sempre essere nella funzione Match.
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] semplice ma...

Postdi Flash30005 » 17/11/10 01:43

Beh tutta la routine For...Next non serve proprio a nulla, prova così
Codice: Seleziona tutto
Sub prova()
Dim MemCumx(30) As Long
x = Application.WorksheetFunction.Match(Application.WorksheetFunction.Max(MemCumx()), MemCumx())
MsgBox x
End Sub


L'errore penso sia dovuta alla funzione Match... Ma dove l'hai trovata? E cosa dovrebbe fare?

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba] semplice ma...

Postdi Anthony47 » 17/11/10 02:00

Flash, credo che Ramset avesse posto un altro problema.

Per Ramset: l' equivoco nasce dal fatto che tu sei convinto di aver definito una matrice di 30 celle, ma la matrice certamente ne ha 31 perche' (credo) tu non hai impostato Option Base 1 e quindi la prima cella del tuo array e' MemCumx(0) mentre con MemCumx(30) fai riferimento alla trentunesima.
E la tua X cerca la posizione, non l' indice.

Quindi il mio suggerimento e' impostare Option Base 1 in testa al modulo, oppure usare usare
Dim MemCumx(1 To 30) As Long

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [vba] semplice ma...

Postdi ramset64 » 17/11/10 09:51

Come al solito Anthony for ever.... ho ragione a chiamarlo magico.... grazie!!!!
Grazie anche a Flash ovviamente.
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino


Torna a Applicazioni Office Windows


Topic correlati a "[vba] semplice ma...":


Chi c’è in linea

Visitano il forum: Nessuno e 43 ospiti