Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 586
Default Problem Using 'Mod'

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
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,441
Default Problem Using 'Mod'

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



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,718
Default Problem Using 'Mod'

Mod only takes integer values as the second argument.

Actually Mod takes any number but rounds it to the nearest integer. So
Ryan's 1/16 was rounded to zero causing the division by zero.

--
Jim
"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
| 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
|
|

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,441
Default Problem Using 'Mod'

Jim,

Ah! That's good to know, but I can't imagine why one would want to use it that way.

Bernie


"Jim Rech" wrote in message ...
Mod only takes integer values as the second argument.


Actually Mod takes any number but rounds it to the nearest integer. So
Ryan's 1/16 was rounded to zero causing the division by zero.

--
Jim
"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
| 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
|
|



  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 586
Default Problem Using 'Mod'

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






  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 4,624
Default Problem Using 'Mod'

Perhaps:



Dim dTest As Double
dTest = 16 * Controls("cboRevealH" & i).Value
If Abs(dTest - CInt(dTest)) 1e-10 Then MsgBox "Invalid"

which allows for some rounding error. Adjust to suit


In article ,
RyanH wrote:

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?

  #7   Report Post  
Posted to microsoft.public.excel.programming
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






  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,718
Default Problem Using 'Mod'

If the number entered/selected is a multiple of 16 this would be true:

Case Val(controls("cboRevealH" & i).Value) Mod 16 = 0

--
Jim
"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
|
|
|

  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,441
Default Problem Using 'Mod'

Jim,

He wants multiples of 1/16th.

Bernie
MS Excel MVP


"Jim Rech" wrote in message ...
If the number entered/selected is a multiple of 16 this would be true:

Case Val(controls("cboRevealH" & i).Value) Mod 16 = 0

--
Jim
"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
|
|
|



  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,718
Default Problem Using 'Mod'

I'm not clear about what actually appears in the combo box so my post was
just in case it was whole numbers (representing 16ths). So 16, 32, 48 would
be valid. If I'm wrong, "never mind" <g.

--
Jim
"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
| Jim,
|
| He wants multiples of 1/16th.
|
| Bernie
| MS Excel MVP
|
|
| "Jim Rech" wrote in message
...
| If the number entered/selected is a multiple of 16 this would be true:
|
| Case Val(controls("cboRevealH" & i).Value) Mod 16 = 0
|
| --
| Jim
| "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
| |
| |
| |
|
|
|

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Colon at the end of excel file name(ex: problem.xls:1, problem.xls financeguy New Users to Excel 2 January 15th 10 01:15 AM
Started out as an Access problem. Now an Excel problem RobertM Excel Discussion (Misc queries) 2 April 26th 06 07:30 PM
problem with a conditional max problem Brian Cornejo Excel Discussion (Misc queries) 1 February 18th 05 06:25 PM
Problem when multipple users access shared xl-file at the same time, macrocode for solve this problem? OCI Excel Programming 0 May 16th 04 10:40 PM


All times are GMT +1. The time now is 10:12 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"