Condividi:        

Input numerici in una userForm

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

Input numerici in una userForm

Postdi wallace&gromit » 09/11/22 12:02

Ciao,
ho una userform in cui vorrei inserire dei dati di coordinate x,y in forma di testo.
A seconda dei casi queste possono essere inserite in vari modi, ma io dovrò sempre estrarre due blocchi numerici.
Esempi di possibili entrate:
2700100 1114200
2700100; 1114200
2700100 / 1114200
2'700'100 / 1'114'200
2'700'100.552 / 1'114'200.324

In tutti i casi ho bisogno di passare ai calcoli successivi i valori numerici di RifX e RifY, con un massimo di 3 decimali

Non è in office ma CorelDraw, ma penso che il principio di VBA sia lo stesso.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Sponsor
 

Re: Input numerici in una userForm

Postdi Anthony47 » 09/11/22 14:25

Non so come potrebbe essere tradotto su CoreDraw, io col vba userei:
Codice: Seleziona tutto
 Dim tbVal As String
Dim RifX As Single, RifY As Single
'
tbVal = UserForm1.TextBox1.Value
tbVal = Replace(tbVal, "'", "", , , vbTextCompare)       'elimina '
tbVal = Replace(tbVal, ";", "/", , , vbTextCompare)     'sostituisci ;
tbVal = Replace(tbVal, " ", "/", , , vbTextCompare)     'sostituisci " "
mysplit = Split(tbVal & "0/0", "/", , vbTextCompare)
On Error Resume Next
RifX = CSng(mysplit(0))
RifY = CSng(mysplit(1))
On Error GoTo 0

Ma non ti conviene usare due textbox, così almeno e' certa la suddivisione tra x e y?
Avatar utente
Anthony47
Moderatore
 
Post: 19211
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Input numerici in una userForm

Postdi wallace&gromit » 09/11/22 15:20

Grazie mille Anthony, utilissimo, come sempre (anche per CorelDraw!), penso che ci sono.

Ho dovuto fare qualche modifica per ottenere quello che volevo, perché nella prima versione andava in palla con la seconda cifra.
Voglio tenere una sola textbox perché spesso il risultato è copiato e incollato da elenchi di valori.

Ho aggiunto una riduzione degli slash nel caso in cui ci fossero più spazi, così ho potuto semplificare mysplit e ho tolto Csng (cosa fa questo comando? A me apparentemente toglieva i decimali).

Codice: Seleziona tutto
    tbVal = Replace(tbVal, "'", "", , , vbTextCompare)       'elimina '
    tbVal = Replace(tbVal, " ", "/", , , vbTextCompare)     'sostituisci " "
    tbVal = Replace(tbVal, ";", "/", , , vbTextCompare)     'sostituisci ;
    tbVal = Replace(tbVal, "//", "/", , , vbTextCompare)     'sostituisci " "
    tbVal = Replace(tbVal, "//", "/", , , vbTextCompare)     'sostituisci " "
    sostit = tbVal
    mysplit = Split(tbVal, "/", , vbTextCompare)
    On Error Resume Next
    RifX = mysplit(0)
    RifY = mysplit(1)
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Input numerici in una userForm

Postdi Anthony47 » 09/11/22 17:30

CSng converte una stringa in Numero in Singola Precisione; se ti perde i decimali e' perche' il separatore usato nella scrittura e' diverso dal separatore decimale della tua lingua

Per eliminare spazi multipli all'origine puoi usare
Codice: Seleziona tutto
tbVal = Application.WorksheetFunction.Trim(UserForm1.TextBox1.Value)
(cioe' usare la Trim di Excel (non la Trim del vba) per togliere spazi superflui
Avatar utente
Anthony47
Moderatore
 
Post: 19211
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Input numerici in una userForm

Postdi wallace&gromit » 09/11/22 17:39

Eh, mi scontro con due realtà:
non sto lavorando in excel
e uso il sistema numerico (e di coordinate) svizzero

eppure io parla tua lingua augh :lol: :lol: :lol:

comunque togliendo quella funzione ho risolto, grazie ancora!
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21


Torna a Applicazioni Office Windows


Topic correlati a "Input numerici in una userForm":


Chi c’è in linea

Visitano il forum: Nessuno e 53 ospiti