Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Variabili tra SUB e SUB
Forum - Visual Basic 6 - Variabili tra SUB e SUB

Avatar
mpsinfo (Normal User)
Newbie


Messaggi: 2
Iscritto: 17/03/2007

Segnala al moderatore
Postato alle 21:39
Sabato, 17/03/2007
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.

PM Quote
Avatar
Reese (Ex-Member)
Pro


Messaggi: 179
Iscritto: 09/08/2006

Segnala al moderatore
Postato alle 0:32
Domenica, 18/03/2007
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.

PM Quote
Avatar
mpsinfo (Normal User)
Newbie


Messaggi: 2
Iscritto: 17/03/2007

Segnala al moderatore
Postato alle 9:53
Domenica, 18/03/2007
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

PM Quote
Avatar
Reese (Ex-Member)
Pro


Messaggi: 179
Iscritto: 09/08/2006

Segnala al moderatore
Postato alle 16:25
Domenica, 18/03/2007
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)

PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 18:25
Domenica, 18/03/2007
l'option explicit.
la cosa migliore è metterlo obbligatorio.

PM Quote
Avatar
Reese (Ex-Member)
Pro


Messaggi: 179
Iscritto: 09/08/2006

Segnala al moderatore
Postato alle 18:56
Domenica, 18/03/2007
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.

PM Quote