Novità

come mettere in una variabile memorizzabile un qualsiasi filtro

lotto_tom75

Advanced Premium Member
Cerco di spiegarmi meglio... con un esempio...

Codice:
Sub Main
   pippo = "ok"
   filtroutilizzato : pippo = "ok"
   If filtroutilizzato Then
      Scrivi "OK PIPPO"
   End If
   Scrivi "filtro utilizzato " & filtroutilizzato
End Sub

Al posto di filtroutilizzato : pippo = "ok" che ovviamente genera errore ed è solo per cercare di far capire cosa intendo per memorizzare il filtro... è possibile mettere un filtro memorizzabile in una variabile per poi poterla mettere in qualsiasi IF THEN o qualsivoglia altro tipo di filtro e/o condizione?

Grazie

👋🙂
 
Ma il valore di filtroutilizzato a cosa è uguale o diverso

è solo uno di esempio... del tutto senza senso...
mi serve di sapere solo come memorizzare il dato del filtro (qualunque esso sia) in una variabile in modo che poi quest'ultima possa essere interpretata correttamente come filtro ovunque si voglia mettere successivamente e sopratutto che sia stampabile a video appunto...
 
Specifica cosa intendi per filtro.
Se è un array o altro

ciao claudio, come ho detto anche a genios non è importante quale sia il filtro ma come poterlo "memorizzare" in variabile...

Ad ogni modo puoi indicarmi se vuoi entrambi i modi sia che si tratti di array o di altro...
Un esempio di filtro potrebbe essere con un operatore logico <= ad esempio... per stringa o valore numerico...
 
Help di Spaziomeria
Lezione 01-LeVariabili
Le Variabili
  • Le variabili possono essere immaginate come dei contenitori , esse infatti possono contenere uno ed un solo valore alla volta che sia esso un valore numerico ad esempio 25 o un valore testuale ad esempio Bari
  • Le variabili si identificano attraverso un nome che scegliamo noi e si dichiarano con la parola chiave Dim
ecc. ecc
 
Ciao Tom75, senza entrare troppo nel dettaglio, ti consiglio di crearti una variable pubblica.
Nell'editor di VB con il tasto destro sulla cartella "Moduli" vai su "inserisci" e poi aggiungi Modulo.
Chiamalo come vuoi (ex. Modulocomune).
Ora in alto all'editor fuori da qualsiasi routine potrai dichiarare una variabile pubblica che resterà disponibile per tutto il progetto e non solo per una sub locale.
Ti ricordo: Bolean -> per ottenere Vero/Falso / String -> per ottenere stringhe di testo / Byte o Integer o Long per ottenere valori numerici.

esempio
...
Option Explicit
Public pippo as Bolean -> memorizzerai in pippo un risultato che può essere Vero o Falso

oppure

Public pippo as String -> memorizzerai in pippo una stringa di solo testo

oppure

Public pippo as Byte -> memorizzerai in pippo valori numerici (compresi tra 0-255 con spazio in memoria di 1solo byte)

...

Nella tua sub locale potrai inserire la variabile "pippo" ed essa sarà riconosciuta da tutto il progetto.

Spero di esserti stato d'aiuto.
 
Grazie ad entrambi per le risposte ragazzi... ma purtroppo non mi sono spiegato bene...
A me servirebbe un esempio da parte vostra di variabile "filtro"...

di questo tipo...

Codice:
dim VARIABILEFILTRO

if VARIABILEFILTRO then...

Spero di essermi spiegato meglio... e che sopratutto sia possibile...

Ciao

:)
 
Perdonami, ma non riesco comprendere "VARIABILEFILTRO" cos'è.
Intanto Dim in modo generico non va benissimo, cmq cerca di farmi capire cosa vuoi memorizzare nella tua variabile
Cosa dovrebbe esserci all'interno di variabilefiltro un numero o una stringa. Cosa dovrebbe memorizzare ?
Ho capito........ If VARIABILEFILTRO then True or False ?
 
Perdonami, ma non riesco comprendere "VARIABILEFILTRO" cos'è.
Intanto Dim in modo generico non va benissimo, cmq cerca di farmi capire cosa vuoi memorizzare nella tua variabile
Cosa dovrebbe esserci all'interno di variabilefiltro un numero o una stringa. Cosa dovrebbe memorizzare ?
Ho capito........ If VARIABILEFILTRO then True or False ?

No figurati. Sono io che ho richieste particolari e difficili da spiegare... :)

ti faccio un esempio di filtro... e prova semmai a VARIABILIZZARLO... sempre che sia possibile...

Codice:
IF   variabileA > variabileB  THEN

vorrei salvare il filtro "fittizio" (che può essere qualunque altro...) : variabileA > variabileB in una variabile... o qualsiasi altra cosa... per poterlo richiamare, salvare e stampare a video dove voglio...

es. FILTRO : variabileA > variabileB

scrivi FILTRO
scrivifile FILE,FILTRO
ecc...

👋🙂
 
Si possono fare cose bellissime e si può... ma prima è necessario capire cosa si sta facendo e dove si vuole arrivare.
In parte " forse ho compreso", fai una prova.
Memorizzati FILTRO come pubblico come ti ho spiegato al mio primo post, in questo modo FILTRO è disponibile ovunque.

Ora nella tua sub scriviti il codice
------------------------------------------------------------------
Dim FILTRO, VariabileA, VariabileB as Integer,

IF VariabileA.value > VariabileB.Value Then
FILTRO = VariabileA
ELSEIF VariabileA.value =< VariabileB.Value Then
FILTRO = Variabileb
ENDIF
------------------------------------------------------------------

Adesso VERIFICA la tua VAriabile, apriti la finesta di debug immediato in VB e controlla.
Vai sul menù visualizza e seleziona IMMEDIATA, oppure in modo più spiccio fai CTRL+G
nel riquadro in basso immediato digita
Debug.Print FILTRO

Dovrebbe restituirti il valore memorizzato in base alla condizione del ciclo IF.
Ho compreso bene ? (spero)
... p.s. quì sotto ho dovuto veramente scrivere tanto tanto codice ed ho perso varie notti...😁
 

Allegati

  • MySearch.jpg
    MySearch.jpg
    670,7 KB · Visite: 10
Si possono fare cose bellissime e si può... ma prima è necessario capire cosa si sta facendo e dove si vuole arrivare.
In parte " forse ho compreso", fai una prova.
Memorizzati FILTRO come pubblico come ti ho spiegato al mio primo post, in questo modo FILTRO è disponibile ovunque.

Ora nella tua sub scriviti il codice
------------------------------------------------------------------
Dim FILTRO, VariabileA, VariabileB as Integer,

IF VariabileA.value > VariabileB.Value Then
FILTRO = VariabileA
ELSEIF VariabileA.value =< VariabileB.Value Then
FILTRO = Variabileb
ENDIF
------------------------------------------------------------------

Adesso VERIFICA la tua VAriabile, apriti la finesta di debug immediato in VB e controlla.
Vai sul menù visualizza e seleziona IMMEDIATA, oppure in modo più spiccio fai CTRL+G
nel riquadro in basso immediato digita
Debug.Print FILTRO

Dovrebbe restituirti il valore memorizzato in base alla condizione del ciclo IF.
Ho compreso bene ? (spero)
... p.s. quì sotto ho dovuto veramente scrivere tanto tanto codice ed ho perso varie notti...😁

Grazie ste007 ma penso che non sia quello che cerco purtroppo. Poi il fatto che non sia code in vb script per spaziometria non mi semplifica la vita nel cercare di verificare cosa faccia e come :). Anche l'immagine in allegato non l'ho capita purtroppo. Grazie comunque per la rispo e il tempo dedicatomi. 👋🙂
 
:confused: Mi spiace di non esserti stato d'aiuto, sapessi quante volte ho domandato io e quante volte non mi hanno compreso...!!! peccato, se posso fare qualcos'altro, ben volentieri. Ciao
 
Ultima modifica:
Ciao tom se ho capito bene tu vorresti memorizzare l operatore di confronto.
Potresti metterlo in una f7nzione
Dim idfiltro, aFiltro:aFiltro =array("=","<",">","<=",">=")
Id filtro= scegliopzionemenu(afoltro,o," sel filtro)
Dim val1,val2
Function selFiltro(idfiltro,val1,val2)
Dim bRet: bRet=false
Select case idfiltro
Case 0
If Val1=val2 then Bret = true
Case 1
If Val1<val2 then Bret=true
Ecc
End select
Selfiltro= bret
End function

Scritto da cell e con un solo occhio.
Questa function la inserisci nel codice

Sicuramente c è un modo più elegante per scriverla ed ottimizzarla ma ci penso domani.
Complimenti a ste007 ,
Bel lavoro con vba

Notte a tutti .
 
Ultima modifica:
Ciao tom se ho capito bene tu vorresti memorizzare l operatore di confronto.
Potresti metterlo in una f7nzione
Dim idfiltro, aFiltro:aFiltro =array("=","<",">","<=",">=")
Id filtro= scegliopzionemenu(afoltro,o," sel filtro)
Dim val1,val2
Function selFiltro(idfiltro,val1,val2)
Dim bRet: bRet=false
Select case idfiltro
Case 0
If Val1=val2 then Bret = true
Case 1
If Val1<val2 then Bret=true
Ecc
End select
Selfiltro= bret
End function

Scritto da cell e con un solo occhio.
Questa function la inserisci nel codice

Sicuramente c è un modo più elegante per scriverla ed ottimizzarla ma ci penso domani.
Complimenti a ste007 ,
Bel lavoro con vba

Notte a tutti .

Forse tu ti stai avvicinando a quello che ho in mente ilegend. Peccato per il code non troppo comprensibile che cercherò comunque di decifrare e grazie mille comunque! (y)👋:)

ho risistemato... il tuo code così...

Codice:
Sub main

Dim idfiltro, aFiltro:aFiltro =Array("=","<",">","<=",">=")
idfiltro= ScegliOpzioneMenu(aFiltro,0,"seleziona filtro")
Dim val1,val2

val1=1
val2=3

Call selFiltro(idfiltro,val1,val2)

End sub

Function selFiltro(idfiltro,val1,val2)
Dim bRet: bRet=false
Select Case idfiltro
Case 0
If val1=val2 Then bRet = True
Case 1
If val1<val2 Then bRet=True
'Ecc
End Select
selFiltro= bRet
End Function


Credo proprio che sia soluzione che andavo cercando!
Ancora grazie I legend il leggendario 💪🤗👋🙂
 
Ultima modifica:
Ciao Tom ecco un esempio
Il filtro va applicato uno per volta
se ti metti ad applicarli tutti insieme su centina di lunghette rischi di fondere il pc
metti sempre la possibiiltà di interrompere il tuo script, e utilizza la funzione doEventsEx , che ti permette di utilizzare il tasto e non ti impalla la scappatoia, visto che utilizzi file molto lunghi
Scritta cosi ci risparmiamo degli if ed è un po piu elegante
mi sembra che funzi, ma controlla bene, in caso cerchiamo di aggiustare il tiro
ieri l 'ho scritta a mezza notte ed ero semi addormentato , per questo non era completa

mi raccomando verifica, non vorrei perdessi una cinquina a ruota secca ;)
Codice:
Option Explicit
' controllare che il filtro funzioni correttamente, non se ne da garanzia
' utilizzare un filtro alla volta per non impallare il pc per ricerche di piu combinazioni
' nella funzione  bisogna utilizzare idFiltro da scegliopzione menu '
 
Ultima modifica:
Ciao Tom ecco un esempio
Il filtro va applicato uno per volta
se ti metti ad applicarli tutti insieme su centina di lunghette rischi di fondere il pc
metti sempre la possibiiltà di interrompere il tuo script, e utilizza la funzione doEventsEx , che ti permette di utilizzare il tasto e non ti impalla la scappatoia, visto che utilizzi file molto lunghi
Scritta cosi ci risparmiamo degli if ed è un po piu elegante
mi sembra che funzi, ma controlla bene, in caso cerchiamo di aggiustare il tiro
ieri l 'ho scritta a mezza notte ed ero semi addormentato , per questo non era completa

mi raccomando verifica, non vorrei perdessi una cinquina a ruota secca ;)

Spettacolare ilegend! Complimenti e Grazie! 👌👍👏💪😀

Il tuo meraviglioso script di esempio funziona benissimo ilegend e l'ho già personalizzato secondo alcune mie specifiche esigenze... estendendone ad esempio i casi filtro a 9 (per adesso) e ottimizzandolo per ruota unica e numeri base voluti immessi da tabella.

Output di esempio dopo estensione casi filtro e le altre modifiche...

Valore presenze soglia FQ valPres_x: 10
Valore DIFF soglia valRit_x: 9
Valore RITARDO MINIMO soglia: 230

formazioni random : 10000

Elaborazione effettuata analizzando il seguente periodo [00001] [ 1 ] 07.01.1871 - [10150] [127] 22.10.2022
Per la ruota di Roma e per la sorte di Ambo

Gruppo numerico base analizzato 1.4.12.21.26.27.29.40.41.44.45.56.57.64.65.68.69.80.81.84.85

Lunghetta esaminata. 21.26.27.40.64.69.80
Filtro utilizzato: Rit >= Ritardominimo And RitMax - Rit <= ValRit_x And Pres >= ValPres_x

Rc: 236 | RitMax: 236 | IncrRit 118 | Scarto(RitMax-Rit): 0 | Pres: 500 | ValPres_x: 10
Lunghetta esaminata. 21.26.27.40.69.80.84
Filtro utilizzato: Rit >= Ritardominimo And RitMax - Rit <= ValRit_x And Pres >= ValPres_x

Rc: 236 | RitMax: 236 | IncrRit 108 | Scarto(RitMax-Rit): 0 | Pres: 530 | ValPres_x: 10



mi raccomando verifica, non vorrei perdessi una cinquina a ruota secca ;)

Anche se uscisse in classe 7 👆 non mi farebbe schifo... 😄 A te? 😜 A proposito di questo caso di esempio per l'utilizzo del tuo script ti invito a partecipare al nuovo thread "brain storming..." in sistemistica da dove appunto il gruppo base sopra riportato prende origine... 👋🙃

Nessuna Certezza Solo Poca Probabilità
 
Ultima modifica:
Ciao tom , felice che ti sia stato utile .per favore cancella lo script che hai riportato, nel messaggio che mi citi l ho tenuto tutto il giorno aspettando te :)
Grazie.
 

Ultima estrazione Lotto

  • Estrazione del lotto
    venerdì 10 gennaio 2025
    Bari
    40
    61
    11
    86
    37
    Cagliari
    31
    02
    51
    68
    87
    Firenze
    73
    55
    34
    52
    18
    Genova
    11
    40
    27
    82
    20
    Milano
    80
    71
    65
    19
    10
    Napoli
    50
    30
    03
    01
    36
    Palermo
    66
    42
    43
    76
    89
    Roma
    05
    22
    62
    35
    39
    Torino
    17
    58
    62
    86
    69
    Venezia
    43
    89
    14
    04
    40
    Nazionale
    64
    76
    35
    40
    19
    Estrazione Simbolotto
    Bari
    08
    07
    37
    33
    38

Ultimi Messaggi

Indietro
Alto