Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.misc
|
|||
|
|||
UDF returning #VALUE! why?
=con_check(0,2) == #VALUE!
Function con_check(con_old As Integer, con_now As Integer) Dim i As Integer Dim targ As Integer Dim hit As Integer Dim roll As Integer Dim con_count As Integer con_count = con_now - con_old hit = con_old If con_old < con_now Then For i = 1 To con_count hit = hit + 1 If hit < 3 Then targ = 1 + hit End If If (3 < hit) And (hit < 6) Then targ = hit + 6 End If If hit 5 Then con_check = False Exit Function End If If Application.RoundUp(Rnd() * 6, 0) + Application.RoundUp(Rnd() * 6, 0) targ Then myCell.Value = True Else: con_check = False Exit Function End If Next i Exit Function End If End Function |
#2
Posted to microsoft.public.excel.misc
|
|||
|
|||
UDF returning #VALUE! why?
If you change myCell.Value to con_check it works
-- Kind regards, Niek Otten "Adam Kroger @hotmail.com" <adam_kroger<nospam wrote in message ... =con_check(0,2) == #VALUE! Function con_check(con_old As Integer, con_now As Integer) Dim i As Integer Dim targ As Integer Dim hit As Integer Dim roll As Integer Dim con_count As Integer con_count = con_now - con_old hit = con_old If con_old < con_now Then For i = 1 To con_count hit = hit + 1 If hit < 3 Then targ = 1 + hit End If If (3 < hit) And (hit < 6) Then targ = hit + 6 End If If hit 5 Then con_check = False Exit Function End If If Application.RoundUp(Rnd() * 6, 0) + Application.RoundUp(Rnd() * 6, 0) targ Then myCell.Value = True Else: con_check = False Exit Function End If Next i Exit Function End If End Function |
#3
Posted to microsoft.public.excel.misc
|
|||
|
|||
UDF returning #VALUE! why?
Functions called from the worksheet can't change cell values. Instead of
myCell.Value = True did you mean con_check = True? In article , "Adam Kroger" wrote: =con_check(0,2) == #VALUE! Function con_check(con_old As Integer, con_now As Integer) Dim i As Integer Dim targ As Integer Dim hit As Integer Dim roll As Integer Dim con_count As Integer con_count = con_now - con_old hit = con_old If con_old < con_now Then For i = 1 To con_count hit = hit + 1 If hit < 3 Then targ = 1 + hit End If If (3 < hit) And (hit < 6) Then targ = hit + 6 End If If hit 5 Then con_check = False Exit Function End If If Application.RoundUp(Rnd() * 6, 0) + Application.RoundUp(Rnd() * 6, 0) targ Then myCell.Value = True Else: con_check = False Exit Function End If Next i Exit Function End If End Function |
#4
Posted to microsoft.public.excel.misc
|
|||
|
|||
UDF returning #VALUE! why?
The problem line is likely
myCell.Value = True You haven't delared this variable (do yourself a huge favor and declare your variables -- put Option Explicit as the very first line in the code module, outside of and before any procedure). Moreover, a UDF can NOT change the value of any cell. It can ONLY return a value to the cell from which it was called. Delete the above line of code and your code should work. -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "Adam Kroger @hotmail.com" <adam_kroger<nospam wrote in message ... =con_check(0,2) == #VALUE! Function con_check(con_old As Integer, con_now As Integer) Dim i As Integer Dim targ As Integer Dim hit As Integer Dim roll As Integer Dim con_count As Integer con_count = con_now - con_old hit = con_old If con_old < con_now Then For i = 1 To con_count hit = hit + 1 If hit < 3 Then targ = 1 + hit End If If (3 < hit) And (hit < 6) Then targ = hit + 6 End If If hit 5 Then con_check = False Exit Function End If If Application.RoundUp(Rnd() * 6, 0) + Application.RoundUp(Rnd() * 6, 0) targ Then myCell.Value = True Else: con_check = False Exit Function End If Next i Exit Function End If End Function |
#5
Posted to microsoft.public.excel.misc
|
|||
|
|||
UDF returning #VALUE! why?
I think I have it figured out.... at least I seem to be getting valid
returns now. woo hoo Function con_check(con_old As Integer, con_now As Integer) Dim i As Integer Dim targ As Integer Dim hit As Integer Dim roll As Integer Dim con_count As Integer con_count = con_now - con_old hit = con_old If con_now 5 Then con_check = "DEAD" Exit Function End If If con_old < con_now Then For i = 1 To con_count hit = hit + 1 If hit < 3 Then targ = 1 + hit End If If (3 < hit) And (hit < 6) Then targ = hit + 6 End If If hit 5 Then con_check = "DEAD" Exit Function End If If Application.RoundUp(Rnd() * 6, 0) + Application.RoundUp(Rnd() * 6, 0) targ Then con_check = "PASS" Else: con_check = "FAIL" Exit Function End If Next i Exit Function End If End Function "Adam Kroger @hotmail.com" <adam_kroger<nospam wrote in message ... =con_check(0,2) == #VALUE! Function con_check(con_old As Integer, con_now As Integer) Dim i As Integer Dim targ As Integer Dim hit As Integer Dim roll As Integer Dim con_count As Integer con_count = con_now - con_old hit = con_old If con_old < con_now Then For i = 1 To con_count hit = hit + 1 If hit < 3 Then targ = 1 + hit End If If (3 < hit) And (hit < 6) Then targ = hit + 6 End If If hit 5 Then con_check = False Exit Function End If If Application.RoundUp(Rnd() * 6, 0) + Application.RoundUp(Rnd() * 6, 0) targ Then myCell.Value = True Else: con_check = False Exit Function End If Next i Exit Function End If End Function |
#6
Posted to microsoft.public.excel.misc
|
|||
|
|||
UDF returning #VALUE! why?
Always include Option Explicit in your modules.
If you once check ToolsOptionsEdit, Require Variable Declaration it will be inserted for you automatically -- Kind regards, Niek Otten "Adam Kroger @hotmail.com" <adam_kroger<nospam wrote in message . .. I think I have it figured out.... at least I seem to be getting valid returns now. woo hoo Function con_check(con_old As Integer, con_now As Integer) Dim i As Integer Dim targ As Integer Dim hit As Integer Dim roll As Integer Dim con_count As Integer con_count = con_now - con_old hit = con_old If con_now 5 Then con_check = "DEAD" Exit Function End If If con_old < con_now Then For i = 1 To con_count hit = hit + 1 If hit < 3 Then targ = 1 + hit End If If (3 < hit) And (hit < 6) Then targ = hit + 6 End If If hit 5 Then con_check = "DEAD" Exit Function End If If Application.RoundUp(Rnd() * 6, 0) + Application.RoundUp(Rnd() * 6, 0) targ Then con_check = "PASS" Else: con_check = "FAIL" Exit Function End If Next i Exit Function End If End Function "Adam Kroger @hotmail.com" <adam_kroger<nospam wrote in message ... =con_check(0,2) == #VALUE! Function con_check(con_old As Integer, con_now As Integer) Dim i As Integer Dim targ As Integer Dim hit As Integer Dim roll As Integer Dim con_count As Integer con_count = con_now - con_old hit = con_old If con_old < con_now Then For i = 1 To con_count hit = hit + 1 If hit < 3 Then targ = 1 + hit End If If (3 < hit) And (hit < 6) Then targ = hit + 6 End If If hit 5 Then con_check = False Exit Function End If If Application.RoundUp(Rnd() * 6, 0) + Application.RoundUp(Rnd() * 6, 0) targ Then myCell.Value = True Else: con_check = False Exit Function End If Next i Exit Function End If End Function |
#7
Posted to microsoft.public.excel.misc
|
|||
|
|||
UDF returning #VALUE! why?
That checkbox is not in that screen. I am using '97 does that make a
difference? "Niek Otten" wrote in message ... Always include Option Explicit in your modules. If you once check ToolsOptionsEdit, Require Variable Declaration it will be inserted for you automatically -- Kind regards, Niek Otten "Adam Kroger @hotmail.com" <adam_kroger<nospam wrote in message . .. I think I have it figured out.... at least I seem to be getting valid returns now. woo hoo Function con_check(con_old As Integer, con_now As Integer) Dim i As Integer Dim targ As Integer Dim hit As Integer Dim roll As Integer Dim con_count As Integer con_count = con_now - con_old hit = con_old If con_now 5 Then con_check = "DEAD" Exit Function End If If con_old < con_now Then For i = 1 To con_count hit = hit + 1 If hit < 3 Then targ = 1 + hit End If If (3 < hit) And (hit < 6) Then targ = hit + 6 End If If hit 5 Then con_check = "DEAD" Exit Function End If If Application.RoundUp(Rnd() * 6, 0) + Application.RoundUp(Rnd() * 6, 0) targ Then con_check = "PASS" Else: con_check = "FAIL" Exit Function End If Next i Exit Function End If End Function "Adam Kroger @hotmail.com" <adam_kroger<nospam wrote in message ... =con_check(0,2) == #VALUE! Function con_check(con_old As Integer, con_now As Integer) Dim i As Integer Dim targ As Integer Dim hit As Integer Dim roll As Integer Dim con_count As Integer con_count = con_now - con_old hit = con_old If con_old < con_now Then For i = 1 To con_count hit = hit + 1 If hit < 3 Then targ = 1 + hit End If If (3 < hit) And (hit < 6) Then targ = hit + 6 End If If hit 5 Then con_check = False Exit Function End If If Application.RoundUp(Rnd() * 6, 0) + Application.RoundUp(Rnd() * 6, 0) targ Then myCell.Value = True Else: con_check = False Exit Function End If Next i Exit Function End If End Function |
#8
Posted to microsoft.public.excel.misc
|
|||
|
|||
UDF returning #VALUE! why?
Go to the Tools menu in the VBA Editor, not Excel.
-- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "Adam Kroger @hotmail.com" <adam_kroger<nospam wrote in message . .. That checkbox is not in that screen. I am using '97 does that make a difference? "Niek Otten" wrote in message ... Always include Option Explicit in your modules. If you once check ToolsOptionsEdit, Require Variable Declaration it will be inserted for you automatically -- Kind regards, Niek Otten "Adam Kroger @hotmail.com" <adam_kroger<nospam wrote in message . .. I think I have it figured out.... at least I seem to be getting valid returns now. woo hoo Function con_check(con_old As Integer, con_now As Integer) Dim i As Integer Dim targ As Integer Dim hit As Integer Dim roll As Integer Dim con_count As Integer con_count = con_now - con_old hit = con_old If con_now 5 Then con_check = "DEAD" Exit Function End If If con_old < con_now Then For i = 1 To con_count hit = hit + 1 If hit < 3 Then targ = 1 + hit End If If (3 < hit) And (hit < 6) Then targ = hit + 6 End If If hit 5 Then con_check = "DEAD" Exit Function End If If Application.RoundUp(Rnd() * 6, 0) + Application.RoundUp(Rnd() * 6, 0) targ Then con_check = "PASS" Else: con_check = "FAIL" Exit Function End If Next i Exit Function End If End Function "Adam Kroger @hotmail.com" <adam_kroger<nospam wrote in message ... =con_check(0,2) == #VALUE! Function con_check(con_old As Integer, con_now As Integer) Dim i As Integer Dim targ As Integer Dim hit As Integer Dim roll As Integer Dim con_count As Integer con_count = con_now - con_old hit = con_old If con_old < con_now Then For i = 1 To con_count hit = hit + 1 If hit < 3 Then targ = 1 + hit End If If (3 < hit) And (hit < 6) Then targ = hit + 6 End If If hit 5 Then con_check = False Exit Function End If If Application.RoundUp(Rnd() * 6, 0) + Application.RoundUp(Rnd() * 6, 0) targ Then myCell.Value = True Else: con_check = False Exit Function End If Next i Exit Function End If End Function |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Returning Descending Values | Excel Worksheet Functions | |||
LOOKUP returning value in cell above what I was searching for | Excel Discussion (Misc queries) | |||
Returning all values from a lookup - not just the first/last one | Excel Worksheet Functions | |||
MY VLOOKUP IS RETURNING N/A AND THEREFORE MY TOTAL SUM AT THE BOT. | Excel Discussion (Misc queries) | |||
returning a text cell based on a number cell | Excel Worksheet Functions |