Oppure

Loading
17/03/07 20:39
mpsinfo
Salve a tutti
sono alle prime armi con VBA per Corel e mi sono trovato di fronte al problema che passando da una Sub all'altra non si porta dietro i valori delle variabili ... riporto qui parte di codice per far capire il problema
la variabile Tota prima aumenta ma quando passo

Sub PROVA()
'
' Recorded 26/02/2007
'
' Description: Crea in automatico

ActiveDocument.Unit = cdrMillimeter

Dim x As Double, y As Double, w As Double, h As Double, Tota As Single, SP1 As Single, SP2 As Single

ActiveLayer.Import "Z:\LAVORI\M_P_S\MAILING\DOCUMENTI COREL\_Offerte\Autocomposizione\DIA 001.cdr", cdrCDR
ActiveDocument.Selection.GetBoundingBox x, y, w, h, False
Spostamenti

ActiveLayer.Import "Z:\LAVORI\M_P_S\MAILING\DOCUMENTI COREL\_Offerte\Autocomposizione\DIA 001.cdr", cdrCDR
ActiveDocument.Selection.GetBoundingBox x, y, w, h, False
Spostamenti


End Sub

-------------------------------------

Private Function Spostamenti()

ActiveDocument.Selection.GetBoundingBox x, y, w, h, True
ActiveShape.Move 0#, -Tota
Tota = Tota + h

End Function
----------------------------------------

Grazie per la risposta.
aaa
17/03/07 23:32
Reese
Come fa a portarsela dietro se il suo scope è solo la prima funzione? Per fortuna tua sei in VBA e non in un linguaggio di programmazione un po' più serio e severo che ti obbliga sempre e comunque a dichiarare le variabili (a prescindere da un Option Explicit).

Devi dichiararla globalmente o passarla come parametro.
aaa
18/03/07 8:53
mpsinfo
Io ho provato con DIM a dichiararla anche
dopo nella 2a SUB ma la variabile Tota non
aumenta è come di azzerasse ogni volta

Scusa l'ignoranza ...
mi potresti spiegare cosa devo fare per seguire
il tuo consiglio ?

grazie per la risposta
aaa
18/03/07 15:25
Reese
E' proprio vero che VB imparato come primo linguaggio di programmazione è una cosa stupida da fare.

Devi dichiarare Tota FUORI da ogni sub, cioè all'inizio del programma. Così è globale.

Oppure basta che scrivi il secondo sub così
sub nomedelsub(T as long)
e invochi il secondo sub così
nomedelsub(Tota)
aaa
18/03/07 17:25
P4p3r0g4
l'option explicit.
la cosa migliore è metterlo obbligatorio.
aaa
18/03/07 17:56
Reese
Ancora meglio sarebbe dare un'occhiata a qualche manuale di programmazione, per il proprio bene. Non mi riferisco a questo argomento in particolare, ma in generale.
aaa