View Single Post
  #7   Report Post  
Posted to microsoft.public.excel.programming
Bernie Deitrick Bernie Deitrick is offline
external usenet poster
 
Posts: 5,441
Default Problem Using 'Mod'

Ryan,

You can certainly create function code for it:

Function Even16(myVal As Double) As Boolean
Even16 = (myVal * 16 = Int(myVal * 16))
End Function

Use it like:

MsgBox Even16(Controls("cboRevealH" & i).Value)

or

If Even16(Controls("cboRevealH" & i).Value) Then
MsgBox "That number was an even 16th"
Else
MsgBox "That number was not an even 16th"
End If

HTH,
Bernie
MS Excel MVP


"RyanH" wrote in message
...
Thanks for the reply Bernie, unfortunately that doesn't really do much for
me. Is there a function that would do this below?

16 * Val(controls("cboRevealH" & i)) - Int(16 * Val(controls("cboRevealH" &
i))) = 0

Basically multiple the number in the Combobox by 16 which will return the
total number of 16th's. If the result does not equal a whole number the
number should be considered invalid. It would be nice to have a neat
function for this, any ideas?
--
Cheers,
Ryan


"Bernie Deitrick" wrote:

Ryan,

Mod only takes integer values as the second argument. Try it this way

Val(Controls("cboRevealH" & i).Value) * 16 Mod 1 < 0:
etc.

HTH,
Bernie
MS Excel MVP


"RyanH" wrote in message
...
I am getting an error: Division By Zero, indicated below. I don' t know why
this is happening. Val(controls("cboRevealH" & i).Value) = 5 in the
immediate window. The goal I am trying to achieve is making sure the
combobox is a multiple of a 16th of an inch.

Private Sub cmbApply_Click()

Dim i As Long
Dim Dimension As String

' ensure valid data is entered into userform
For i = 1 To 6

' if anything is entered in Reveal #i, then test if it is valid
If Not controls("cboRevealH" & i).Value = "" Or _
Not controls("tbxRevealW" & i).Value = "" Or _
Not controls("tbxRevealD" & i).Value = "" Then

' test if reveal data is rounded to nearest 1/16th and not empty
Select Case True
ERROR Case Val(controls("cboRevealH" & i).Value) Mod 1 / 16 < 0:
Dimension = "Height"
Case Val(controls("tbxRevealW" & i).Value) Mod 1 / 16 < 0:
Dimension = "Width"
Case Val(controls("tbxRevealD" & i).Value) Mod 1 / 16 < 0:
Dimension = "Depth"
End Select

' show message if a invalid height, width, or depth is entered
If CBool(Dimension) Then
strPrompt = "Please enter a valid " & Dimension & " for
Reveal " & i
strPrompt = strPrompt & ". Round to the nearest 1/16th of
an inch."
intButtons = vbCritical
strTitle = "Problem"
MsgBox strPrompt, intButtons, strTitle
Exit Sub
End If
End If
Next i

End Sub
--
Cheers,
Ryan