Functions are intended to return values. Sum is a function that returns the
total value of all of the numbers. Your function is not returning a value.
You are passing in a value by reference and modifying it that way. In general
functions don't modify the inputs (not always true but generally a good
practice in VB). For example sum does not change any of the numbers that are
passed in. Take a look at this...
Function MyFunction(byval NewText as string) as string
On Error GoTo ErrorHandler
MyFunction = ""
If IsNumeric(Chr(strTempAscii)) Or Chr(strTempAscii) = "-" Or _
Chr(strTempAscii) = "/" Or Chr(strTempAscii) = "\" Then
Else
strTempAscii = ""
MyFunction = Left(NewText , Len(NewText ) -1)
End If
ErrorHandler:
End Function
'your function is still changing strTempAscii which is generally considered
to be
'a side effect. You normally want to avoid side effects in functions.
Private Sub TxtDtoAtto2_Change()
TxtDtoAtto2 = MyFunction( TxtDtoAtto2.text)
End sub
Private Sub TxtDtoAtto2_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)
strTempAscii = ""
strTempAscii = KeyAscii
End Sub
--
HTH...
Jim Thomlinson
"(E-Mail Removed)" wrote:
> Say i wanted to have a numbersonly function
>
> I would Declare this in a new module, but when i call it
>
> Function MyFunction(NewText as string)
> On Error GoTo ErrorHandler
> If IsNumeric(Chr(strTempAscii)) Or Chr(strTempAscii) = "-" Or _
> Chr(strTempAscii) = "/" Or Chr(strTempAscii) = "\" Then
>
> Else
> strTempAscii = ""
> TxtDtoAtto2.Text = Left(TxtDtoAtto2.Text, Len(TxtDtoAtto2.Text) -
> 1)
> End If
>
> ErrorHandler:
> End Function
>
>
> When i call it Like
>
>
> Private Sub TxtDtoAtto2_Change()
> MyFunction( TxtDtoAtto2)
> End sub
> Private Sub TxtDtoAtto2_KeyPress(ByVal KeyAscii As
> MSForms.ReturnInteger)
> strTempAscii = ""
> strTempAscii = KeyAscii
> End Sub
>
> it doesnt work, Is there something im not doing?
>
|