Oppure

Loading
18/06/09 9:19
io90
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!
aaa
18/06/09 10:42
Alceus
Devi sfruttare l'operatore Mod, che permette di effettuare una divisione tra interi...
aaa
18/06/09 14:43
io90
Postato originariamente da Alceus:

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


Sono alle prime armi
Sembra difficile :-|
:(
aaa
18/06/09 17:21
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:
Option Explicit

Private Sub Command1_Click()

    Dim sRisDec As String
    Dim dblDividendo As Double
    Dim dblDivisore As Double
    
    dblDividendo = TxtDivdo.Text
    dblDivisore = TxtDivre.Text
       
' Risultato della divisione:
   TxtRes.Text = Format(dblDividendo / dblDivisore, "#,##0.00")
' Decimali della divisione - Restituisce 2 caratteri da destra:
   sRisDec = Right$(TxtRes.Text, 2)
  
   If sRisDec = 0 Then
        MsgBox (Format(dblDividendo, "#,##0.00") & Space(1) & "é un multiplo di" & Space(1) & Format(dblDivisore, "#,##0.00"))
        Else: MsgBox (Format(dblDividendo, "#,##0.00") & Space(1) & "non é un multiplo di" & Space(1) & Format(dblDivisore, "#,##0.00"))
    End If
End Sub

Spero che ti sia utile.
:k:
aaa
19/06/09 13:27
io90
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:
Option Explicit

Private Sub Command1_Click()

    Dim sRisDec As String
    Dim dblDividendo As Double
    Dim dblDivisore As Double
    
    dblDividendo = TxtDivdo.Text
    dblDivisore = TxtDivre.Text
       
' Risultato della divisione:
   TxtRes.Text = Format(dblDividendo / dblDivisore, "#,##0.00")
' Decimali della divisione - Restituisce 2 caratteri da destra:
   sRisDec = Right$(TxtRes.Text, 2)
  
   If sRisDec = 0 Then
        MsgBox (Format(dblDividendo, "#,##0.00") & Space(1) & "é un multiplo di" & Space(1) & Format(dblDivisore, "#,##0.00"))
        Else: MsgBox (Format(dblDividendo, "#,##0.00") & Space(1) & "non é un multiplo di" & Space(1) & Format(dblDivisore, "#,##0.00"))
    End If
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:
aaa
19/06/09 13:46
GrG
Ecco quello che cerchi prendendo come esempio i multipli di 3:
Private Sub Command1_Click()
Dim risultato As Double
risultato = Val(Text1.Text) Mod 3 'risultato contiente il resto della divisione tra la textbox e 3
'quindi se non c'è il resto ossia risultato = 0 significa che il numero nella textbox è divisibile per 3
If risultato > 0 Then 'Se invece c'è stato un resto esso sarà immagazinato in risultato che perciò sarà maggiore di 0
MsgBox "non è un multiplo"
End If
End Sub
aaa
19/06/09 14:58
Louis
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:
aaa