Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Help with odd type mismatch error
Hi all:
I'm getting a type mismatch with the following code: WorksheetFunction.Percentile(rngIn.Columns(Indx), _ CDbl(txtLowPercent.Value) / 100#) rngIn is type Range and already set. txtLowPercent is a textbox on a userform - this code in part of the userform code. If I replace the CDbl() by a number like 95.0 then the code works fine. I thought CDbl() should work in this situation since Percentile expects a Double. So, two questions. First, what's the problem here? Second, is there an Application level function that replaces the worksheet function Percentile that I should be using use? I'm working in Excel 97 under Win98. Thanks Tony (this is a great group - I wish I had something to offer besides questions) |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Help with odd type mismatch error
Tony,
The only thing I can think of is that the textbox isn't numeric, but contains letters or such. This would throw that error. You could make sure only numbers and dot input with this code Private Sub txtLowPercent_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 48 To 57 'Nos 0 - 9 Exit Sub Case 32 ' space Case 46 ' dot Case Else KeyAscii = 0 End Select End Sub Using worksheetfunctions in VBA is fine, in fact often the best way to avoid re-inventing the meal. -- HTH RP (remove nothere from the email address if mailing direct) "George Raft" wrote in message ... Hi all: I'm getting a type mismatch with the following code: WorksheetFunction.Percentile(rngIn.Columns(Indx), _ CDbl(txtLowPercent.Value) / 100#) rngIn is type Range and already set. txtLowPercent is a textbox on a userform - this code in part of the userform code. If I replace the CDbl() by a number like 95.0 then the code works fine. I thought CDbl() should work in this situation since Percentile expects a Double. So, two questions. First, what's the problem here? Second, is there an Application level function that replaces the worksheet function Percentile that I should be using use? I'm working in Excel 97 under Win98. Thanks Tony (this is a great group - I wish I had something to offer besides questions) |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Help with odd type mismatch error
Thanks Bob, but now I'm confused.
You're right that txtLowPercent.Value is not numeric - it's a string by design. It is set by a spinner using code like CStr(spinner.value) & "%" so that the user sees a percentage in the text box rather than a decimal value. This is for aesthetics only, so I could simply enter the numeric value ... But I thought the type conversion functions were there to handle conversion from one type to another - shouldn't CDbl() return a double from the argument it's given? When I print the result, it certainly looks like a valid number and operations on it (such as /100) yield the expected result. Tony Bob Phillips wrote in message ... Tony, The only thing I can think of is that the textbox isn't numeric, but contains letters or such. This would throw that error. You could make sure only numbers and dot input with this code Private Sub txtLowPercent_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 48 To 57 'Nos 0 - 9 Exit Sub Case 32 ' space Case 46 ' dot Case Else KeyAscii = 0 End Select End Sub Using worksheetfunctions in VBA is fine, in fact often the best way to avoid re-inventing the meal. -- HTH RP (remove nothere from the email address if mailing direct) "George Raft" wrote in message ... Hi all: I'm getting a type mismatch with the following code: WorksheetFunction.Percentile(rngIn.Columns(Indx), _ CDbl(txtLowPercent.Value) / 100#) rngIn is type Range and already set. txtLowPercent is a textbox on a userform - this code in part of the userform code. If I replace the CDbl() by a number like 95.0 then the code works fine. I thought CDbl() should work in this situation since Percentile expects a Double. So, two questions. First, what's the problem here? Second, is there an Application level function that replaces the worksheet function Percentile that I should be using use? I'm working in Excel 97 under Win98. Thanks Tony (this is a great group - I wish I had something to offer besides questions) |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
Help with odd type mismatch error
Tony,
Partially correct, it is just that the CDbl function will fail if it contains non-numerics, such as a or b (or % :-)). It will convert a numeric string to a double, but not a character string. Try putting ?CDbl("a") in the immediate window and see the problem. ?CDbl("1") is fine though. Then try ?CDbl("1%") If you have a percentage in the textbox, then try using CDbl(ReplacetxtLowPercent.Value,"%","")) I think that will sort you. -- HTH RP (remove nothere from the email address if mailing direct) "George Raft" wrote in message ... Thanks Bob, but now I'm confused. You're right that txtLowPercent.Value is not numeric - it's a string by design. It is set by a spinner using code like CStr(spinner.value) & "%" so that the user sees a percentage in the text box rather than a decimal value. This is for aesthetics only, so I could simply enter the numeric value ... But I thought the type conversion functions were there to handle conversion from one type to another - shouldn't CDbl() return a double from the argument it's given? When I print the result, it certainly looks like a valid number and operations on it (such as /100) yield the expected result. Tony Bob Phillips wrote in message ... Tony, The only thing I can think of is that the textbox isn't numeric, but contains letters or such. This would throw that error. You could make sure only numbers and dot input with this code Private Sub txtLowPercent_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 48 To 57 'Nos 0 - 9 Exit Sub Case 32 ' space Case 46 ' dot Case Else KeyAscii = 0 End Select End Sub Using worksheetfunctions in VBA is fine, in fact often the best way to avoid re-inventing the meal. -- HTH RP (remove nothere from the email address if mailing direct) "George Raft" wrote in message ... Hi all: I'm getting a type mismatch with the following code: WorksheetFunction.Percentile(rngIn.Columns(Indx), _ CDbl(txtLowPercent.Value) / 100#) rngIn is type Range and already set. txtLowPercent is a textbox on a userform - this code in part of the userform code. If I replace the CDbl() by a number like 95.0 then the code works fine. I thought CDbl() should work in this situation since Percentile expects a Double. So, two questions. First, what's the problem here? Second, is there an Application level function that replaces the worksheet function Percentile that I should be using use? I'm working in Excel 97 under Win98. Thanks Tony (this is a great group - I wish I had something to offer besides questions) |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Visual Basic Error Run Time Error, Type Mismatch | Excel Discussion (Misc queries) | |||
Type Mismatch error | Excel Programming | |||
Befuddled with For Next Loop ------ Run - Time Error '13' Type Mismatch Error | Excel Programming | |||
Type Mismatch Error | Excel Programming | |||
Type mismatch error | Excel Programming |