Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[VBA] RICHIAMO CODICE

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] RICHIAMO CODICE

Postdi ramset64 » 12/09/10 14:52

Ragazzi qualcuno sa spiegarmi come richiamare un pezzo di codice? Mi spiego meglio:
Dividiamo la mia macro in 4.....

Primo pezzo
....
....

Secondo pezzo
....
...

Terzo pezzo
....
....

Quarto pezzo.
.....
....
ecco io qui vorrei poter rieserguire il SECONDO PEZZO per poi tornare di nuovo qui... senza però eseguire il TERZO PEZZO.....
aggiungo che non posso spostare il secondo pezzo in un' altra macro altrimenti utilizzerei il comando call, ne posso utilizzare il comando goto (mettendo un etichetta al secondo pezzo perchè mi verrebbe eseguito pure il terzo pezzo.

non so se sono stato chiaro, spero di si.
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Sponsor
 

Re: [VBA] RICHIAMO CODICE

Postdi Flash30005 » 12/09/10 15:27

bisognerebbe sapere quali sono le condizioni
comunque
alla fine del Secondo pezzo puoi mettere un
goto salta
e mettere l'etichetta
salta:
prima dell'end sub
Però se devi eseguire in sequenza Pezzo1,2,3,4
quel goto salta dovrà essere condizionato

Ma ripeto, si deve analizzare meglio come è strutturata la macro

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [VBA] RICHIAMO CODICE

Postdi ramset64 » 12/09/10 15:30

difficile condizionare quel salta..... la macro dovrà essere eseguita cosi...
1,2,3,4.... e poi deve essere richiamato il 2.... non esiste un comando tipo call per un pezzo di codice?
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [VBA] RICHIAMO CODICE

Postdi Flash30005 » 12/09/10 23:51

La cosa più semplice a questo punto è ripetere con copia e incolla la macro relativa al pezzo 2
e incollarla dopo la macro pezzo 4

Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [VBA] RICHIAMO CODICE

Postdi Anthony47 » 13/09/10 00:45

Se il codice di fase 2 e' abbastanza semplice, il suggerimento di Flash (ripetere le istruzioni, vedi sopra) e' anche il mio. In alternativa valuta una struttura di questo tipo:
Codice: Seleziona tutto
Primo pezzo
....
....
FLA64=False
Pezzo2:
Secondo pezzo
....
...
If FLA64 then ????
Terzo pezzo
....
....
Quarto pezzo.
.....

FLA64=True :Goto Pezzo2


Poiche' non hai detto che cosa devi fare dopo che hai ripetuto il 2° pezzo non sono in grado di completare l' istruzione con i ????.

Trovo anche strano che non possa usare il 2°pezzo in una macro a se stante; se e' per un problema di validita' delle variabili comuni, basterebbe dichiararle in testa al modulo per averle sharate tra le macro di modulo...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [VBA] RICHIAMO CODICE

Postdi Flash30005 » 13/09/10 02:14

Ramset64 nel primo post dice di voler eseguire tutta la macro che è composta di 4 routine alla fine deve rieseguire solo la seconda routine e uscire (quindi senza eseguire la prima e senza passare per la terza e quarta).

Una cosa del genere credo
Codice: Seleziona tutto
Sub RipetiMacro2()
Passo = 0
Inizio:
If Passo = 0 Then
    MsgBox "Macro pezzo 1"
End If

MsgBox "Macro pezzo 2"

If Passo = 0 Then
    MsgBox "Macro pezzo 3"
End If
If Passo = 0 Then
    MsgBox "Macro pezzo 4"
End If
Passo = Passo + 1
If Passo = 1 Then GoTo Inizio
End Sub


Ora deve fare solo delle prove e farci sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [VBA] RICHIAMO CODICE

Postdi ramset64 » 13/09/10 11:59

Ragazzi grazie a tutti dei suggerimenti.... allora io in realtà ho già risolto come suggerito copiando il pezzo di codice di fase 2. Questa però è una soluzione che non mi piace molto perchè quel pezzo di codice è lungo e soggetto a modifiche etc etc.... l'ideale sarebbe proprio trasferire quel pezzo di codice un una macro a parte e che potrei richiamare dal codice principale.... però in questo caso non mi mantiene in memoria i dati che vengono immagazzinati in quel pezzo di codice.... perchè io non so come fare.... Anthony ha suggerito come fare ma non l'ho ben capito, sarebbe di grande aiuto un esempio o una spiegazione più dettagliata per un profano come me.... grazie di cuore a tutti.
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [VBA] RICHIAMO CODICE

Postdi Flash30005 » 13/09/10 12:27

Per rendere share (disponibile) una variabile, stringa o altro la devi dichiarare in Public

All'inizio del modulo (sopra a tutte le macro) inserirai questo codice

Public Pezzo2 as string

appena darai invio si inserirà automaticamnte una linea di separazione dalle macro
_______________________________________

Sub MacroTua()
...
...
end sub
_________________________________________

Altrimenti prova il codice del post delle ore 3:14
lo inserisci così come è in un modulo e lo avvii
noterai che usciranno 5 messaggi, utilizzati solo come test (premi ok ad ogni messaggio)
Macro pezzo 1
Macro pezzo 2
Macro pezzo 3
Macro pezzo 4
Macro pezzo 2

è sufficiente che tu sostituisca l'intera riga del
Msgbox "Macro pezzo x"
con le parti della tua macro corrispondenti al "Pezzo x"

Fai sapere se è chiaro
altrimenti posta ancora
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [VBA] RICHIAMO CODICE

Postdi ramset64 » 13/09/10 20:18

Flash probabilmente non ho capito bene, porto il codice che voglio estrrapolare in una nuova macro che chiamo PEZZO2, se metto in alto nel codice pubblic pezzo2 as string (come mi pare di aver capito di dover fare), quando eseguo la macro mi da subito errore "rilevato nome non univoco".... dove sbaglio? grazie
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [VBA] RICHIAMO CODICE

Postdi ramset64 » 13/09/10 20:29

per capirci meglio ho fatto cosi:

Public SECONDARIA As String
------------------------------------

Sub PRINCIPALE()
.....
......
Call SECONDARIA
......
End Sub


Sub SECONDARIA()
.....
......
......
End Sub


ma appena eseguo PRINCIPALE viene fuori l'errore che ho detto prima
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [VBA] RICHIAMO CODICE

Postdi ricky53 » 13/09/10 23:06

Ciao,
attenzione stai confondendo i nomi delle variabili con i nomi delle macro !!!

Le varibili vanno definite "public" per essere utilizzate in più di una macro

Le macro non devono essere definite.

SECONDARIA è una macro

Pezzo2 è una variabile

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [VBA] RICHIAMO CODICE

Postdi Anthony47 » 13/09/10 23:53

Leggi il messaggio di Ricky sopra per la spiegazione dell' errore che commetti.

Userai ad esempio:
Codice: Seleziona tutto
'Dichiarazione di variabili condivise -IN TESTA AL MODULO, prima di qualsiasi macro
Dim Variabile1 as Integer, Pippo as Long
Dim Variabile2 as String
Dim Matr1(10) as String

Sub Principale()
'...
'...Compilazione delle variabili
'...
Call Secondaria
'...
'...
End Sub

Sub Secondaria()
'...
'... Usa le variabili condivise
'... per ricevere e restituire parametri
'...
End Sub

Se le macro sono distribuite su piu' Moduli, allora invece di Dim userai Public.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [VBA] RICHIAMO CODICE

Postdi ramset64 » 14/09/10 14:49

Adesso è tutto chiaro, appena possibile (lavoro permettendo) metterò in pratica i vostri graditissimi consigli.
grazie a tutti, siete grandi, ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino


Torna a Applicazioni Office Windows


Topic correlati a "[VBA] RICHIAMO CODICE":


Chi c’è in linea

Visitano il forum: Nessuno e 21 ospiti