Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Visualizzare msgbox, se nella textbox compare un multiplo di un numero intero
Forum - Visual Basic 6 - Visualizzare msgbox, se nella textbox compare un multiplo di un numero intero

Avatar
io90 (Normal User)
Newbie


Messaggi: 8
Iscritto: 04/03/2009

Segnala al moderatore
Postato alle 11:19
Giovedì, 18/06/2009
Buongiorno ragazzi!
Avrei da porvi un quesito!
Dovrei visualizzare una msgbox, che compaia quando una textbox visualizzi il multiplo di un numero.
Sapreste indicarmi la procedura?
Vi ringrazio!

PM Quote
Avatar
Alceus (Member)
Expert


Messaggi: 288
Iscritto: 22/07/2008

Segnala al moderatore
Postato alle 12:42
Giovedì, 18/06/2009
Devi sfruttare l'operatore Mod, che permette di effettuare una divisione tra interi...

PM Quote
Avatar
io90 (Normal User)
Newbie


Messaggi: 8
Iscritto: 04/03/2009

Segnala al moderatore
Postato alle 16:43
Giovedì, 18/06/2009
Testo quotato

Postato originariamente da Alceus:

Devi sfruttare l'operatore Mod, che permette di effettuare una divisione tra interi...



Sono alle prime armi
Sembra difficile :-|
:(

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 19:21
Giovedì, 18/06/2009
Non sempre l'operatore Mod può servire allo scopo; infatti:"l'operatore Mod viene utilizzato per dividere due numeri e restituire solo il resto. Se uno dei numeri è decimale, verrà arrotondato all'intero".
Quindi nel seguente caso: 12 / 4,3 il risultato restituito é, per quello che ci serve, errato.
Volendo si potrebbe utilizzare ( ad esempio, non escludo che vi siano modi migliori )la seguente routine:
Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2.  
  3. Private Sub Command1_Click()
  4.  
  5.     Dim sRisDec As String
  6.     Dim dblDividendo As Double
  7.     Dim dblDivisore As Double
  8.    
  9.     dblDividendo = TxtDivdo.Text
  10.     dblDivisore = TxtDivre.Text
  11.        
  12. ' Risultato della divisione:
  13.    TxtRes.Text = Format(dblDividendo / dblDivisore, "#,##0.00")
  14. ' Decimali della divisione - Restituisce 2 caratteri da destra:
  15.    sRisDec = Right$(TxtRes.Text, 2)
  16.  
  17.    If sRisDec = 0 Then
  18.         MsgBox (Format(dblDividendo, "#,##0.00") & Space(1) & "é un multiplo di" & Space(1) & Format(dblDivisore, "#,##0.00"))
  19.         Else: MsgBox (Format(dblDividendo, "#,##0.00") & Space(1) & "non é un multiplo di" & Space(1) & Format(dblDivisore, "#,##0.00"))
  20.     End If
  21. End Sub


Spero che ti sia utile.
:k:

PM Quote
Avatar
io90 (Normal User)
Newbie


Messaggi: 8
Iscritto: 04/03/2009

Segnala al moderatore
Postato alle 15:27
Venerdì, 19/06/2009
Testo quotato

Postato originariamente da Louis:

Non sempre l'operatore Mod può servire allo scopo; infatti:"l'operatore Mod viene utilizzato per dividere due numeri e restituire solo il resto. Se uno dei numeri è decimale, verrà arrotondato all'intero".
Quindi nel seguente caso: 12 / 4,3 il risultato restituito é, per quello che ci serve, errato.
Volendo si potrebbe utilizzare ( ad esempio, non escludo che vi siano modi migliori )la seguente routine:
Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2.  
  3. Private Sub Command1_Click()
  4.  
  5.     Dim sRisDec As String
  6.     Dim dblDividendo As Double
  7.     Dim dblDivisore As Double
  8.    
  9.     dblDividendo = TxtDivdo.Text
  10.     dblDivisore = TxtDivre.Text
  11.        
  12. ' Risultato della divisione:
  13.    TxtRes.Text = Format(dblDividendo / dblDivisore, "#,##0.00")
  14. ' Decimali della divisione - Restituisce 2 caratteri da destra:
  15.    sRisDec = Right$(TxtRes.Text, 2)
  16.  
  17.    If sRisDec = 0 Then
  18.         MsgBox (Format(dblDividendo, "#,##0.00") & Space(1) & "é un multiplo di" & Space(1) & Format(dblDivisore, "#,##0.00"))
  19.         Else: MsgBox (Format(dblDividendo, "#,##0.00") & Space(1) & "non é un multiplo di" & Space(1) & Format(dblDivisore, "#,##0.00"))
  20.     End If
  21. End Sub


Spero che ti sia utile.
:k:



Io più semplicemente volevo evitarmi il:

If text1.text="3" or "6" or "9" or "12" or .................
Then msgbox......
end if

Cioè vorrei inserire un comando che a ogni multiplo di 3 ad esempio, mi esca una msgbox, senza star a segnare all'infinito tutti i suoi multipli :yup:

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 15:46
Venerdì, 19/06/2009
Ecco quello che cerchi prendendo come esempio i multipli di 3:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command1_Click()
  2. Dim risultato As Double
  3. risultato = Val(Text1.Text) Mod 3 'risultato contiente il resto della divisione tra la textbox e 3
  4. 'quindi se non c'è il resto ossia risultato = 0 significa che il numero nella textbox è divisibile per 3
  5. If risultato > 0 Then 'Se invece c'è stato un resto esso sarà immagazinato in risultato che perciò sarà maggiore di 0
  6. MsgBox "non è un multiplo"
  7. End If
  8. End Sub


PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 16:58
Venerdì, 19/06/2009
Io90,
l'unica cortesia che devi usare a chi risponde alle tue domande, é quella di provare il codice che cortesemente ti é stato postato. Cosa che non é avvenuta nel caso di cui trattasi.
La routine che ti ho postato evidenzia appunto i numeri multipli eventualmente inseriti nella Txt TxtDivdo.Text compresi quelli del 3 (se digiti 9 e 3 nelle rispettive Txt ottieni la risposta "é un multiplo ..." o viceversa "non é un multiplo").
:pat:

PM Quote