Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA: generare caratteri ASCII progressivi

512 views
Skip to first unread message

draleo

unread,
Jul 26, 2011, 5:19:35 AM7/26/11
to
In A1 ho una stringa qualsiasi costituita da 7 caratteri Ascii
stampabili (cioè che vanno dal num 33 al num 126).
Esempio : K{d8Lpa

Dovrei trovare una procedura , per mettere in A2
una nuova stringa di 7 caratteri ASCII in cui, ciascun carattere (dal
33 al 126) sia aumentato di una unità e la stringa ottenuta vada a
rimpiazzare quella in A1, per poi ricominciare tutte le volte che
serve
Credo che così tutte le stringhe generate dovrebbero essere diverse
da tutte quelle generate in precedenza
(o no?)

Draleo

Mauro Gamberini

unread,
Jul 26, 2011, 9:57:20 AM7/26/11
to
"draleo" ha scritto nel messaggio
news:ed5007f0-4dc1-4d58...@fq4g2000vbb.googlegroups.com...

In A1 ho una stringa qualsiasi costituita da 7 caratteri Ascii

stampabili (cio� che vanno dal num 33 al num 126).
Esempio : K{d8Lpa

Dovrei trovare una procedura , per mettere in A2
una nuova stringa di 7 caratteri ASCII in cui, ciascun carattere (dal

33 al 126) sia aumentato di una unit� e la stringa ottenuta vada a


rimpiazzare quella in A1, per poi ricominciare tutte le volte che
serve

Credo che cos� tutte le stringhe generate dovrebbero essere diverse


da tutte quelle generate in precedenza
(o no?)

*****************************

Mah.
Prova a mettere questa in un modulo standard:

Public Function f(ByVal rng As Range) As String
Dim lng As Long
Dim lLen As Long
lLen = Len(rng.Value)
f = ""
For lng = 1 To lLen
f = f & Chr(Asc(Mid(rng.Value, lng, 1)) + 1)
Next
End Function

Sette valori in A1.
A2: =f(A1)

---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/

Bruno Campanini

unread,
Jul 26, 2011, 10:23:48 AM7/26/11
to

E quando in A1 vi è un ~ cioè un CHR(126)?

Bruno


Mauro Gamberini

unread,
Jul 26, 2011, 10:29:30 AM7/26/11
to

E quando in A1 vi è un ~ cioè un CHR(126)?

Bruno
*******************************

E quando arriviamo a 255?

Ciao Bruno.

Mauro Gamberini

unread,
Jul 26, 2011, 10:35:06 AM7/26/11
to
<cut>

Se è una stringa casuale che vuoi generare, vedi qui:

http://www.google.it/#sclient=psy&hl=it&site=&source=hp&q=vb+generare+una+stringa+random&aq=f&aqi=&aql=&oq=&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=2fa57ca13755c3ba&biw=1920&bih=1099

Personalmente però, visto che in una stringa di 7 caratteri generata
random c'è da fidarsi una cosa giusta, aggiungerei un controllo
su quanto già presente nella colonna.

draleo

unread,
Jul 26, 2011, 2:28:51 PM7/26/11
to
On 26 Lug, 16:35, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> <cut>
>
> Se una stringa casuale che vuoi generare, vedi qui:
>
> http://www.google.it/#sclient=psy&hl=it&site=&source=hp&q=vb+generare...
>
> Personalmente per , visto che in una stringa di 7 caratteri generata
> random c' da fidarsi una cosa giusta, aggiungerei un controllo
> su quanto gi presente nella colonna.

>
> ---------------------------
> Mauro Gamberini
> Microsoft MVP - Excelhttp://www.riolab.org/http://www.maurogsc.eu/

Capisco che Il quesito è del genere: Se non son matti non li vogliamo.
Ma visto che in questo gruppo abbondano gli esperti di scienze
matematiche (oltre che di informatica) io ho provato ugualmente
La funzione di Mauro per funzionare funziona.
Ma vorrei verificare meglio i risultati ottenuti

>Se una stringa casuale che vuoi generare, vedi qui:
>http://www.google.it/#sclient=psy&hl=it&site=&source=hp&q=vb+generare...
>Personalmente per , visto che in una stringa di 7 caratteri generata
>random c' da fidarsi una cosa giusta, aggiungerei un controllo
>su quanto gi presente nella colonna.

No. Non mi serve generare una stringa casuale di caratteri random
Ma una stringa di caratteri ASCII non generata in precedenza (penso
sia da escludere memorizzare tutte le stringhe generate in precedenza
(alla fine saranno migliaia)e poi verificare se quella generata in
quel momento sia già stata generata.
Inoltre mi servirebbe un meccanismo progressivo regolare (che nei
fatti fa sì che ogni stringa non sia mai stata generata prima)

Io Avevo pensato al meccanismo di un contakilometri: che ha 7 caselle
(Da dx a sin)
7° casella :gira e :
-ogni 10 fa aumentare di una unità
-La 6° casella. La quale gira e ogni 10 fa aumentare di una unità
-la 5° casella . La quale gira e ogni 10 fa aumentare di una unità
- la 4° casella ecc fino alla prima casella

Solo che con il ContaKm si va di dieci in dieci; qui invece si va da
33 a 126 (oppure 125 che è lo stesso)

Forza; Vi ho visto risolvere cose molto più difficili..

draleo

plinius

unread,
Jul 27, 2011, 2:19:34 PM7/27/11
to

"draleo" <dra...@libero.it> ha scritto nel messaggio
news:ed5007f0-4dc1-4d58...@fq4g2000vbb.googlegroups.com...

In A1 ho una stringa qualsiasi costituita da 7 caratteri Ascii
stampabili (cio� che vanno dal num 33 al num 126).
Esempio : K{d8Lpa

Dovrei trovare una procedura , per mettere in A2
una nuova stringa di 7 caratteri ASCII in cui, ciascun carattere (dal

33 al 126) sia aumentato di una unit� e la stringa ottenuta vada a


rimpiazzare quella in A1, per poi ricominciare tutte le volte che
serve

Credo che cos� tutte le stringhe generate dovrebbero essere diverse


da tutte quelle generate in precedenza
(o no?)

Draleo

*******************

No, certamente no!

Potresti scrivere solo 94 (cio� 126 - 32) stringhe una diversa dall'altra,
dopodich� o ricominci daccapo e ti fermi per sempre.
Per capirci meglio semplifichiamo usando (invece dei 94 caratteri che vanno
dal carattere 33 al carattere 126) le 10 cifre della numerazione decimale
(da carattere 48 a carattere 57).
Prima stringa sarebbe:
0000000
poi, aumentando di una unit� tutte le 7 cifre avresti:
1111111
e, di seguito:
2222222
3333333
4444444
5555555
6666666
7777777
8888888
9999999

A questo punto o ricominci da 0000000 e ripeti la sequenza oppure hai finito
l�!
Sai bene, invece, che sette cifre ti consentirebbero, diversamente usate, di
avere 10.000.000 di combinazioni differenti a partire da 0000000 e fino a
9999999.

Quindi tutt'altro discorso � quello di utilizzare i 94 caratteri che hai
scelto di usare come se fossero cifre di un sistema di numerazione a base 94
(con valori decimali delle cifre che vanno da 0 a 93)
In tal caso puoi ottenere ben 64.847.759.419.264 stringhe diverse (94^7).
Un numero davvero esorbitante e non credo probabile che ti servano cos�
tante combinazioni.
Questa UDF scala di "una unit�" la stringa di cui gli fornisci l'indirizzo.
--------------------------------------------
Function scala(base As Range, Optional num As Long = 7) As String
Dim i As Long, c As String
scala = base.Value
If Len(scala) <> num Then
scala = "Lunghezza della stringa errata"
Exit Function
End If
i = num
Do
c = Asc(Mid(scala, i, 1))
c = (c - 32) Mod 94 + 33
If c < 33 Or c > 126 Then
scala = "Caratteri errati nella stringa"
Exit Function
End If
scala = Left(scala, i - 1) & Chr(c) & Mid(scala, i + 1)
If c = 33 Then
i = i - 1
If i < 1 Then
scala = String(num, Chr(33))
Exit Do
End If
Else
Exit Do
End If
Loop
End Function
--------------------------------------------
e accetta come parametro opzionale il numero di cifre che intendi utilizzare
se, come suppongo, 7 vanno oltre le tue esigenze.

Ciao,
E.


draleo

unread,
Jul 30, 2011, 4:18:46 AM7/30/11
to
On 27 Lug, 20:19, "plinius" <punto.linea...@LEVARElibero.it> wrote:
> "draleo" <dra...@libero.it> ha scritto nel messaggionews:ed5007f0-4dc1-4d58...@fq4g2000vbb.googlegroups.com...

> In A1 ho una stringa qualsiasi costituita da 7 caratteri Ascii
> stampabili (cioè che vanno dal num 33 al num 126).

> Esempio   :  K{d8Lpa
>
> Dovrei trovare una procedura , per mettere in A2
> una nuova stringa di 7 caratteri ASCII  in cui, ciascun carattere (dal
> 33 al 126) sia aumentato di una unità e la stringa ottenuta vada a

> rimpiazzare quella in A1, per poi  ricominciare tutte le volte che
> serve
> Credo che così tutte le stringhe generate dovrebbero essere  diverse

> da tutte quelle generate in  precedenza
>  (o no?)
>
> Draleo
>
> *******************
>
> No, certamente no!
>
> Potresti scrivere solo 94 (cioè 126 - 32) stringhe una diversa dall'altra,
> dopodiché o ricominci daccapo e ti fermi per sempre.

> Per capirci meglio semplifichiamo usando (invece dei 94 caratteri che vanno
> dal carattere 33 al carattere 126) le 10 cifre della numerazione decimale
> (da carattere 48 a carattere 57).
> Prima stringa sarebbe:
> 0000000
> poi, aumentando di una unità tutte le 7 cifre avresti:

> 1111111
> e, di seguito:
> 2222222
> 3333333
> 4444444
> 5555555
> 6666666
> 7777777
> 8888888
> 9999999
>
> A questo punto o ricominci da 0000000 e ripeti la sequenza oppure hai finito
> lì!

> Sai bene, invece, che sette cifre ti consentirebbero, diversamente usate, di
> avere 10.000.000 di combinazioni differenti a partire da 0000000 e fino a
> 9999999.
>
> Quindi tutt'altro discorso è quello di utilizzare i 94 caratteri che hai

> scelto di usare come se fossero cifre di un sistema di numerazione a base 94
> (con valori decimali delle cifre che vanno da 0 a 93)
> In tal caso puoi ottenere ben 64.847.759.419.264 stringhe diverse (94^7).
> Un numero davvero esorbitante e non credo probabile che ti servano così
> tante combinazioni.
> Questa UDF scala di "una unità" la stringa di cui gli fornisci l'indirizzo.

Eccezionale ! Veramente eccezionale !
Sapevo bene che in questo gruppo vi sono cervelli superiori !
Grazie mille
draleo

draleo

unread,
Jul 30, 2011, 5:51:57 AM7/30/11
to
On 27 Lug, 20:19, "plinius" <punto.linea...@LEVARElibero.it> wrote:
> "draleo" <dra...@libero.it> ha scritto nel messaggionews:ed5007f0-4dc1-4d58...@fq4g2000vbb.googlegroups.com...

> In A1 ho una stringa qualsiasi costituita da 7 caratteri Ascii
> stampabili (cioè che vanno dal num 33 al num 126).

> Esempio   :  K{d8Lpa
>
> Dovrei trovare una procedura , per mettere in A2
> una nuova stringa di 7 caratteri ASCII  in cui, ciascun carattere (dal
> 33 al 126) sia aumentato di una unità e la stringa ottenuta vada a

> rimpiazzare quella in A1, per poi  ricominciare tutte le volte che
> serve
> Credo che così tutte le stringhe generate dovrebbero essere  diverse

> da tutte quelle generate in  precedenza
>  (o no?)
>
> Draleo
>
> *******************
>
> No, certamente no!
>
> Potresti scrivere solo 94 (cioè 126 - 32) stringhe una diversa dall'altra,
> dopodiché o ricominci daccapo e ti fermi per sempre.

> Per capirci meglio semplifichiamo usando (invece dei 94 caratteri che vanno
> dal carattere 33 al carattere 126) le 10 cifre della numerazione decimale
> (da carattere 48 a carattere 57).
> Prima stringa sarebbe:
> 0000000
> poi, aumentando di una unità tutte le 7 cifre avresti:

> 1111111
> e, di seguito:
> 2222222
> 3333333
> 4444444
> 5555555
> 6666666
> 7777777
> 8888888
> 9999999
>
> A questo punto o ricominci da 0000000 e ripeti la sequenza oppure hai finito
> lì!

> Sai bene, invece, che sette cifre ti consentirebbero, diversamente usate, di
> avere 10.000.000 di combinazioni differenti a partire da 0000000 e fino a
> 9999999.
>
> Quindi tutt'altro discorso è quello di utilizzare i 94 caratteri che hai

> scelto di usare come se fossero cifre di un sistema di numerazione a base 94
> (con valori decimali delle cifre che vanno da 0 a 93)
> In tal caso puoi ottenere ben 64.847.759.419.264 stringhe diverse (94^7).
> Un numero davvero esorbitante e non credo probabile che ti servano così
> tante combinazioni.
> Questa UDF scala di "una unità" la stringa di cui gli fornisci l'indirizzo.

Eccezionale ! Veramente ECCEZIONALE !
sapevo che in questo gruppo vi sono cervelli superiori !
geazie Mille
draleo

plinius

unread,
Jul 30, 2011, 8:56:13 AM7/30/11
to

"draleo" <dra...@libero.it> ha scritto nel messaggio
news:289a8343-d67a-459b...@l7g2000vbz.googlegroups.com...

*************

Esagerato!! :-))


draleo

unread,
Jul 31, 2011, 4:00:24 AM7/31/11
to
On 27 Lug, 20:19, "plinius" <punto.linea...@LEVARElibero.it> wrote:
> "draleo" <dra...@libero.it> ha scritto nel messaggionews:ed5007f0-4dc1-4d58...@fq4g2000vbb.googlegroups.com...

> In A1 ho una stringa qualsiasi costituita da 7 caratteri Ascii
> stampabili (cioè che vanno dal num 33 al num 126).

> Esempio   :  K{d8Lpa
>
> Dovrei trovare una procedura , per mettere in A2
> una nuova stringa di 7 caratteri ASCII  in cui, ciascun carattere (dal
> 33 al 126) sia aumentato di una unità e la stringa ottenuta vada a

> rimpiazzare quella in A1, per poi  ricominciare tutte le volte che
> serve
> Credo che così tutte le stringhe generate dovrebbero essere  diverse

> da tutte quelle generate in  precedenza
>  (o no?)
>
> Draleo
>
> *******************
>
> No, certamente no!
>
> Potresti scrivere solo 94 (cioè 126 - 32) stringhe una diversa dall'altra,
> dopodiché o ricominci daccapo e ti fermi per sempre.

> Per capirci meglio semplifichiamo usando (invece dei 94 caratteri che vanno
> dal carattere 33 al carattere 126) le 10 cifre della numerazione decimale
> (da carattere 48 a carattere 57).
> Prima stringa sarebbe:
> 0000000
> poi, aumentando di una unità tutte le 7 cifre avresti:

> 1111111
> e, di seguito:
> 2222222
> 3333333
> 4444444
> 5555555
> 6666666
> 7777777
> 8888888
> 9999999
>
> A questo punto o ricominci da 0000000 e ripeti la sequenza oppure hai finito
> lì!

> Sai bene, invece, che sette cifre ti consentirebbero, diversamente usate, di
> avere 10.000.000 di combinazioni differenti a partire da 0000000 e fino a
> 9999999.
>
> Quindi tutt'altro discorso è quello di utilizzare i 94 caratteri che hai

> scelto di usare come se fossero cifre di un sistema di numerazione a base 94
> (con valori decimali delle cifre che vanno da 0 a 93)
> In tal caso puoi ottenere ben 64.847.759.419.264 stringhe diverse (94^7).
> Un numero davvero esorbitante e non credo probabile che ti servano così
> tante combinazioni.
> Questa UDF scala di "una unità" la stringa di cui gli fornisci l'indirizzo.

Eccezionale! Veramente eccezionale!
sapevo che questo gruppo abbonda di cervelli superiori
grazie
draleo

eliano

unread,
Sep 1, 2011, 5:40:40 PM9/1/11
to
> draleo- Nascondi testo citato
>
> - Mostra testo citato -

LOL
Credo che siamo tutti d'accordo su Plinius, tuttavia, Draleo, tenta di
ricomporti un po'.
Se dai in escandescenze reiterate anche al di fuori del NG, potresti
trovare un tuo collega (specialista, capisciammè) che si impressiona e
prende provvedimenti.;-))
Con la maxima cordialità e lo spirito il più amichevole possibile,
Eliano

draleo

unread,
Sep 4, 2011, 6:43:23 AM9/4/11
to
> Eliano- Nascondi testo citato

>
> - Mostra testo citato -

capisco, capisco
ma Non ho dato in escandescenze (il cervello ancora regge bene...anche
se non so fino a quando)
Ho ripetuto 3-4 volte il messaggio di congratulazioni a Plinius perchè
in quei giorni
non venivano visulizzati i messaggi e di conseguenza credevo non
fossero stati ricevuti
Poi, improvvisamente sono ricomparsi tutti
e solo allora ho capito di aver involontariamente esagerato
Ciao
draleo

eliano

unread,
Sep 4, 2011, 8:46:45 AM9/4/11
to

A chi lo dici?? A me non capita quasi mai.:-))
Eliano

0 new messages