Pannello di Controllo Moderatore ]

[Risolto] Richiamare variabile definita in più Sub

Creare una macro - Scrivere uno script - Usare le API

[Risolto] Richiamare variabile definita in più Sub

Messaggioda Biagio91 » sabato 17 aprile 2021, 1:17

Ciao a tutti,

Data una stringa di testo "Ciao" che si definisce come XYZ="Ciao"
Visto che questa variabile deve essere usata su molteplici sub, esiste il modo (presumo di si ma non capisco come) per far sì che XYZ possa essere scritto solo su una sub del tipo
Codice: Seleziona tutto   Espandi visualeStringi visuale
Sub DefineXYZ
XYZ="Ciao"
End Sub


E che tutti gli altri sub possano utilizzarla?
ad esempio

Codice: Seleziona tutto   Espandi visualeStringi visuale
Sub Pippo 'oppure Pluto, Orazio o Clarabella
Saluto = InputBox ("Inserire il valore di XYZ", 0, "Prova:")
If Saluto <> XYZ Then
  MsgBox "Codice Errato, Ritenta.", "Errato"
  Exit Sub
Else
  MsgBox "Baci e Abbracci", "Corretto"
End If
End Sub



Grazie mille
Ultima modifica di Biagio91 il domenica 18 aprile 2021, 20:53, modificato 1 volta in totale.
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
Biagio91
 
Messaggi: 90
Iscritto il: mercoledì 3 febbraio 2021, 21:25

Re: Richiamare variabile definita in più Sub

Messaggioda patel » sabato 17 aprile 2021, 8:14

La risposta te l'ho già data nel post degli asterischi
-------------------
OpenOffice 4.1 e Libre Office 6.4.1.2 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3626
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Richiamare variabile definita in più Sub

Messaggioda Biagio91 » sabato 17 aprile 2021, 14:50

Si ho visto, riporto per praticità, mi dici:

"Dichiarare una variabile prima delle sub equivale a dichiararla globale, cioè accessibile da tutte le sub, per accertartene puoi fare delle prove. Non esitare a testare varie soluzioni, è così che si impara."

Ho provato...ma non capisco come fare... in questo esempio io metto nell'intestazione

Codice: Seleziona tutto   Espandi visualeStringi visuale
Dim XYZ As String
XYZ = "Ciao"

Sub Pippo 'oppure Pluto, Orazio o Clarabella
Saluto = InputBox ("Inserire il valore di XYZ", 0, "Prova:")
If Saluto <> XYZ Then
  MsgBox "Codice Errato, Ritenta.", "Errato"
  Exit Sub
Else
  MsgBox "Baci e Abbracci", "Corretto"
End If
End Sub

Ma niente...

Ho provato a fare Pure
Codice: Seleziona tutto   Espandi visualeStringi visuale
Sub DefineXYZ (XYZ)
Dim XYZ As String
XYZ = "Ciao"
End Sub

Sub Pippo 'oppure Pluto, Orazio o Clarabella
Call DefineXYZ
Saluto = InputBox ("Inserire il valore di XYZ", 0, "Prova:")
If Saluto <> XYZ Then
  MsgBox "Codice Errato, Ritenta.", "Errato"
  Exit Sub
Else
  MsgBox "Baci e Abbracci", "Corretto"
End If
End Sub


E molte altre prove...ma andando a tentoni non ho risolto; ho letto la guida ufficiale sulle variabili pubbliche di openoffice calc, ma oltre a dire che mettendole nell'intestazione bisogna metterci Dim o Public non spiegano come richiamare il valore di quella variabile.
Sto sbagliando approccio?? Mi sono perso qualcosa??

L'ultima prova che ho fatto è stata quella che forse si è avvicinata di più ma ancora penso di essere distante:
Codice: Seleziona tutto   Espandi visualeStringi visuale
'-----------------------
Dim XYZ As String
'-----------------------
Sub DefineYXZ
XYZ="Ciao"
End Sub
'-----------------------
Sub Pippo 'oppure Pluto, Orazio o Clarabella
Saluto = InputBox ("Inserire il valore di XYZ", "Prova:")
If Saluto <> XYZ Then
  MsgBox "Codice Errato, Ritenta.", "Errato"
  Exit Sub
Else
  MsgBox "Baci e Abbracci", "Corretto"
End If
End Sub
'-----------------------

Cosa sbaglio? Nell'ultima prova mi da sempre MsgBox relativo all'Errato
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
Biagio91
 
Messaggi: 90
Iscritto il: mercoledì 3 febbraio 2021, 21:25

Re: Richiamare variabile definita in più Sub

Messaggioda patel » sabato 17 aprile 2021, 20:46

Codice: Seleziona tutto   Espandi visualeStringi visuale
Dim XYZ As String
    '-----------------------
    Sub DefineYXZ
    XYZ="Ciao"
    call Pippo '<<<<<<<<<<<<<<<<<
    End Sub
    '-----------------------
    Sub Pippo 'oppure Pluto, Orazio o Clarabella
    Saluto = InputBox ("Inserire il valore di XYZ", "Prova:")
    If Saluto <> XYZ Then
      MsgBox "Codice Errato, Ritenta.", "Errato"
      Exit Sub
    Else
      MsgBox "Baci e Abbracci", "Corretto"
    End If
    End Sub
-------------------
OpenOffice 4.1 e Libre Office 6.4.1.2 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3626
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Richiamare variabile definita in più Sub

Messaggioda Biagio91 » domenica 18 aprile 2021, 16:40

Ciao Grazie mille,

Ok questo funziona eseguendo la macro DefineXYZ;

Se volessi invece fare al contrario, ovvero eseguire le Macro Pippo, Pluto, Orazio, Clarabella senza dover ogni volta scrivere sul loro codice XYZ="Ciao" ??

Seguendo lo stesso ragionamento in teoria dovrebbe bastare inserire il call sulla macro chiamante Pippo, e chiamare la macro Define XYZ...ma non mi funzia mica...mi sono fatto l'idea che con l'end sub si azzeri tutto quello che era stato definito prima e quindi non vada per forza....come potrei fare quindi per fare questo??

Grazie mille
Ciao
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
Biagio91
 
Messaggi: 90
Iscritto il: mercoledì 3 febbraio 2021, 21:25

Re: Richiamare variabile definita in più Sub

Messaggioda patel » domenica 18 aprile 2021, 18:40

La variabile pubblica viene vista da tutte le sub chiamate dalla principale, poi viene rilasciata, per fare quello che vuoi tu devi usare una cella del foglio, magari non visibile.
-------------------
OpenOffice 4.1 e Libre Office 6.4.1.2 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3626
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Richiamare variabile definita in più Sub

Messaggioda Biagio91 » domenica 18 aprile 2021, 19:33

Ok quindi diventerebbe tipo

Codice: Seleziona tutto   Espandi visualeStringi visuale
Sub Pippo 'oppure Pluto, Orazio o Clarabella

FoglioFisso = ThisDocument.Sheets.GetByName("NomeFoglio")
CellaFissa = FoglioFisso.GetCellRangeByName("A1")
XYZ= CellaFissa.String

Saluto = InputBox ("Inserire il valore di XYZ", "Prova:")
    If Saluto <> XYZ Then
      MsgBox "Codice Errato, Ritenta.", "Errato"
      Exit Sub
    Else
      MsgBox "Baci e Abbracci", "Corretto"
    End If
    End Sub


E la parte
Codice: Seleziona tutto   Espandi visualeStringi visuale
FoglioFisso = ThisDocument.Sheets.GetByName("NomeFoglio")
CellaFissa = FoglioFisso.Cells.GetRangeByName("A1")
XYZ= CellaFissa.String


Dovrei ripeterla per ogni macro interessata.
Corretto?

Effettivamente basterebbe tenere la cella in questione veramente fissa e si è apposto...dov'è l'inghippo? sembra quasi troppo bello per essere vero XD
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Avatar utente
Biagio91
 
Messaggi: 90
Iscritto il: mercoledì 3 febbraio 2021, 21:25

Re: [Risolto] Richiamare variabile definita in più Sub

Messaggioda patel » lunedì 19 aprile 2021, 7:16

corretto
-------------------
OpenOffice 4.1 e Libre Office 6.4.1.2 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3626
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno


Torna a Macro e UNO API

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti